<html>
<head><meta charset="utf-8"><title>GAT Bugs #76826, #76407 · wg-traits · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/index.html">wg-traits</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html">GAT Bugs #76826, #76407</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="236676704"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236676704" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236676704">(Apr 29 2021 at 13:55)</a>:</h4>
<p>I really want to chat about <a href="https://github.com/rust-lang/rust/issues/76826">#76826</a> and <a href="https://github.com/rust-lang/rust/issues/76407">#76407</a>, because I think I actually think they're blocking GATs (primarily because the ICE on the first, but the underlying issue is the same for both)</p>



<a name="236676718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236676718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236676718">(Apr 29 2021 at 13:55)</a>:</h4>
<p>But I don't think I can <em>right now</em></p>



<a name="236676728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236676728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236676728">(Apr 29 2021 at 13:55)</a>:</h4>
<p>But quickly, to summarize:</p>



<a name="236676813"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236676813" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236676813">(Apr 29 2021 at 13:56)</a>:</h4>
<p>If we end up with something like <code>&lt;Foo as Bar&gt;::Item&lt;'a&gt;: Baz</code></p>



<a name="236676859"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236676859" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236676859">(Apr 29 2021 at 13:56)</a>:</h4>
<p>Right now, that <code>ProjectionTy</code> has an escaping bound var <code>'a</code>, so we give up early</p>



<a name="236676924"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236676924" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236676924">(Apr 29 2021 at 13:57)</a>:</h4>
<p>But, I think we can <em>probably</em> normalize that fine because <code>&lt;Foo as Bar&gt;::Item</code> doesn't have any bound vars</p>



<a name="236676983"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236676983" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236676983">(Apr 29 2021 at 13:57)</a>:</h4>
<p>The problem then comes in when there's something like <code>type Item&lt;'a&gt; where Self: 'a;</code></p>



<a name="236677024"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236677024" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236677024">(Apr 29 2021 at 13:58)</a>:</h4>
<p>Because we generate an obligation for that normalization and the obligation now has escaping vars</p>



<a name="236678551"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236678551" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236678551">(Apr 29 2021 at 14:07)</a>:</h4>
<p>OK</p>



<a name="236678577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236678577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236678577">(Apr 29 2021 at 14:07)</a>:</h4>
<p>I can dig a bit now, this is my "async fn in traits" time</p>



<a name="236678946"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236678946" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236678946">(Apr 29 2021 at 14:09)</a>:</h4>
<p>So</p>



<a name="236679129"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679129" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679129">(Apr 29 2021 at 14:10)</a>:</h4>
<p>This seems just true for all normalization under binders</p>



<a name="236679234"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679234" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679234">(Apr 29 2021 at 14:11)</a>:</h4>
<p>man</p>



<a name="236679240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679240">(Apr 29 2021 at 14:11)</a>:</h4>
<p>Maybe we just remove that check</p>



<a name="236679257"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679257" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679257">(Apr 29 2021 at 14:11)</a>:</h4>
<p><em>no</em></p>



<a name="236679281"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679281" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679281">(Apr 29 2021 at 14:11)</a>:</h4>
<p>I tried :)</p>



<a name="236679283"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679283" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679283">(Apr 29 2021 at 14:11)</a>:</h4>
<p>How no?</p>



<a name="236679327"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679327" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679327">(Apr 29 2021 at 14:12)</a>:</h4>
<p>I think can imagine a lot of stuff dying</p>



<a name="236679329"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679329" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679329">(Apr 29 2021 at 14:12)</a>:</h4>
<p>Things blow up</p>



<a name="236679341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679341">(Apr 29 2021 at 14:12)</a>:</h4>
<p>Yeah, ok</p>



<a name="236679371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679371">(Apr 29 2021 at 14:12)</a>:</h4>
<p>Lots of things assume no bound vars in predicates</p>



<a name="236679373"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679373" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679373">(Apr 29 2021 at 14:12)</a>:</h4>
<p>because they generate a lot of obligations we don't know how to satisfy, right?</p>



<a name="236679395"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679395" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679395">(Apr 29 2021 at 14:12)</a>:</h4>
<p>Ah, ok, that too</p>



<a name="236679537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679537">(Apr 29 2021 at 14:13)</a>:</h4>
<p>that could be solved</p>



<a name="236679543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679543">(Apr 29 2021 at 14:13)</a>:</h4>
<p>by removing the assertions lol :)</p>



<a name="236679562"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679562" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679562">(Apr 29 2021 at 14:13)</a>:</h4>
<p>(or in other ways)</p>



<a name="236679633"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679633" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679633">(Apr 29 2021 at 14:14)</a>:</h4>
<p>but at that point we really want the generalized placeholder infrastructure</p>



<a name="236679662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679662">(Apr 29 2021 at 14:14)</a>:</h4>
<p>well I geuss we have it</p>



<a name="236679690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679690">(Apr 29 2021 at 14:14)</a>:</h4>
<p>I mean, if we remove the assertions, is that <em>okay</em></p>



<a name="236679749"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679749" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679749">(Apr 29 2021 at 14:14)</a>:</h4>
<p>I think it's ok, but we have to make sure the code treats them like placeholders</p>



<a name="236679821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679821">(Apr 29 2021 at 14:15)</a>:</h4>
<p>it's also true that</p>



<a name="236679833"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679833" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679833">(Apr 29 2021 at 14:15)</a>:</h4>
<p>so actually</p>



<a name="236679854"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679854" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679854">(Apr 29 2021 at 14:15)</a>:</h4>
<p>... I forget how much universe infra is in rustc now</p>



<a name="236679867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679867">(Apr 29 2021 at 14:15)</a>:</h4>
<p>let me go looking</p>



<a name="236679908"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236679908" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236679908">(Apr 29 2021 at 14:15)</a>:</h4>
<p>because the right way to handle this is actually to lean on universes</p>



<a name="236680012"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680012" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680012">(Apr 29 2021 at 14:16)</a>:</h4>
<p>if we actually took a stab at fixing this bug <em>for real</em> we could fix a lot of ICEs</p>



<a name="236680053"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680053" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680053">(Apr 29 2021 at 14:16)</a>:</h4>
<p>and it may be within reach</p>



<a name="236680121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680121">(Apr 29 2021 at 14:17)</a>:</h4>
<p>I think I landed the big universe refactorings.. didn't I? ;) it's all a blur</p>



<a name="236680123"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680123" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680123">(Apr 29 2021 at 14:17)</a>:</h4>
<p>I'm not really sure where to begin there</p>



<a name="236680147"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680147" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680147">(Apr 29 2021 at 14:17)</a>:</h4>
<p>Yes, there were some universe refactorings</p>



<a name="236680149"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680149" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680149">(Apr 29 2021 at 14:17)</a>:</h4>
<p>yeah that's ok let me dig a bit</p>



<a name="236680154"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680154" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680154">(Apr 29 2021 at 14:17)</a>:</h4>
<p>I'm kind of excited now</p>



<a name="236680265"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680265" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680265">(Apr 29 2021 at 14:18)</a>:</h4>
<p>oh wait</p>



<a name="236680280"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680280" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680280">(Apr 29 2021 at 14:18)</a>:</h4>
<p>I never <em>quite</em> removed the leak check</p>



<a name="236680299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680299">(Apr 29 2021 at 14:18)</a>:</h4>
<p>No</p>



<a name="236680313"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680313" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680313">(Apr 29 2021 at 14:18)</a>:</h4>
<p>I got really close</p>



<a name="236680380"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680380" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680380">(Apr 29 2021 at 14:18)</a>:</h4>
<p>I think there were some backwards-compatibility concerns</p>



<a name="236680397"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680397" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680397">(Apr 29 2021 at 14:19)</a>:</h4>
<p>yes. it broke some specific patterns.</p>



<a name="236680412"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680412" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680412">(Apr 29 2021 at 14:19)</a>:</h4>
<p>/me thinks</p>



<a name="236680431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680431">(Apr 29 2021 at 14:19)</a>:</h4>
<p>removing the leak check may or may not be necessary</p>



<a name="236680439"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680439" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680439">(Apr 29 2021 at 14:19)</a>:</h4>
<p>but also it may be an option</p>



<a name="236680468"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680468" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680468">(Apr 29 2021 at 14:19)</a>:</h4>
<p>I had to fix some stuff in coherence to make it work</p>



<a name="236680529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680529">(Apr 29 2021 at 14:20)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/issues/56105">https://github.com/rust-lang/rust/issues/56105</a></p>



<a name="236680684"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680684" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680684">(Apr 29 2021 at 14:20)</a>:</h4>
<p>full writeup: <a href="https://gist.github.com/nikomatsakis/8bfda6c1119727e13ec6e98f33d2b696">https://gist.github.com/nikomatsakis/8bfda6c1119727e13ec6e98f33d2b696</a></p>



<a name="236680773"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236680773" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236680773">(Apr 29 2021 at 14:21)</a>:</h4>
<p>in particular <a href="https://gist.github.com/nikomatsakis/8bfda6c1119727e13ec6e98f33d2b696#why-not-remove-the-leak-check-part-1-coherence">this section</a></p>



<a name="236681022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236681022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236681022">(Apr 29 2021 at 14:22)</a>:</h4>
<p>I remember this</p>



<a name="236681046"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236681046" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236681046">(Apr 29 2021 at 14:22)</a>:</h4>
<p>paging back in</p>



<a name="236716410"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236716410" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236716410">(Apr 29 2021 at 17:48)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> any thoughts here? If I were to try to do something here, where would I start?</p>



<a name="236716811"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236716811" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236716811">(Apr 29 2021 at 17:51)</a>:</h4>
<p>Also pretty sure <a href="https://github.com/rust-lang/rust/issues/76826">#76826</a> is a variant of <a href="https://github.com/rust-lang/rust/issues/62529">#62529</a></p>



<a name="236741222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236741222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236741222">(Apr 29 2021 at 20:38)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> I will spend more time on this tomorrow, I kind of ran out of budget today; I do think there's something actionable here but I'm not 100% sure what yet :)</p>



<a name="236741315"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236741315" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236741315">(Apr 29 2021 at 20:38)</a>:</h4>
<p>Okay I'll be around at the 9:15 time :)</p>



<a name="236832052"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236832052" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236832052">(Apr 30 2021 at 13:15)</a>:</h4>
<p>we could talk more about this</p>



<a name="236832116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236832116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236832116">(Apr 30 2021 at 13:16)</a>:</h4>
<p>Let's</p>



<a name="236832580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236832580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236832580">(Apr 30 2021 at 13:20)</a>:</h4>
<p>I'm looking at your writeup on the leak check again</p>



<a name="236832590"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236832590" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236832590">(Apr 30 2021 at 13:20)</a>:</h4>
<p>It's been a while</p>



<a name="236832599"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236832599" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236832599">(Apr 30 2021 at 13:20)</a>:</h4>
<p>so</p>



<a name="236832620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236832620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236832620">(Apr 30 2021 at 13:20)</a>:</h4>
<p>we may actually not have to change anything w/r/t the leak check</p>



<a name="236832713"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236832713" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236832713">(Apr 30 2021 at 13:21)</a>:</h4>
<p>let me double check something</p>



<a name="236832914"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236832914" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236832914">(Apr 30 2021 at 13:22)</a>:</h4>
<p>right ok</p>



<a name="236832922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236832922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236832922">(Apr 30 2021 at 13:22)</a>:</h4>
<p>so we do the leak check in two places now;</p>



<a name="236833002"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833002" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833002">(Apr 30 2021 at 13:23)</a>:</h4>
<p>the whole problem with the leak check -- besides that it was overly conservative -- was that it prevented us from following the "unfold" strategy that we use elsewhere</p>



<a name="236833022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833022">(Apr 30 2021 at 13:23)</a>:</h4>
<p>where we (for example) normalize and return some obligations that have yet to be proved</p>



<a name="236833052"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833052" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833052">(Apr 30 2021 at 13:23)</a>:</h4>
<p>that makes sense</p>



<a name="236833054"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833054" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833054">(Apr 30 2021 at 13:23)</a>:</h4>
<p>but the leak check needs to be done after all of those items have been proven</p>



<a name="236833072"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833072" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833072">(Apr 30 2021 at 13:23)</a>:</h4>
<p>and hence all their implications are known</p>



<a name="236833082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833082">(Apr 30 2021 at 13:24)</a>:</h4>
<p>universes give us the ability to do that</p>



<a name="236833138"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833138" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833138">(Apr 30 2021 at 13:24)</a>:</h4>
<p>by moving the unvierse into the obligation state etc</p>



<a name="236833148"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833148" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833148">(Apr 30 2021 at 13:24)</a>:</h4>
<p>so the leak check is kind of not needed anymore</p>



<a name="236833181"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833181" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833181">(Apr 30 2021 at 13:24)</a>:</h4>
<p>there is this edge case around coherence, though</p>



<a name="236833248"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833248" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833248">(Apr 30 2021 at 13:25)</a>:</h4>
<p>it basically comes down to "what information are we allowed to use to decide which impl to use"-- in some cases, we can see that the outlives relations will lead to errors-- are we allowed to use that info?</p>



<a name="236833259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833259">(Apr 30 2021 at 13:25)</a>:</h4>
<p>we don't normally use <em>any</em> outlives info</p>



<a name="236833284"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833284" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833284">(Apr 30 2021 at 13:25)</a>:</h4>
<p>but the leak check meant that we did use some, and we rely on that in certain ways</p>



<a name="236833298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833298">(Apr 30 2021 at 13:25)</a>:</h4>
<p><em>luckily</em> I think that, in its current state, this is actually orthogonal</p>



<a name="236833307"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833307" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833307">(Apr 30 2021 at 13:25)</a>:</h4>
<p>to the problem at hand</p>



<a name="236833363"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833363" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833363">(Apr 30 2021 at 13:26)</a>:</h4>
<p>"what!" you say "how can that be!"</p>



<a name="236833463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833463">(Apr 30 2021 at 13:26)</a>:</h4>
<p>what! How can that be!</p>



<a name="236833672"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833672" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833672">(Apr 30 2021 at 13:28)</a>:</h4>
<p>thank you for asking!</p>



<a name="236833677"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833677" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833677">(Apr 30 2021 at 13:28)</a>:</h4>
<p>I'll tell you</p>



<a name="236833725"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833725" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833725">(Apr 30 2021 at 13:28)</a>:</h4>
<p>we do leak-checking in two places</p>



<a name="236833762"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833762" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833762">(Apr 30 2021 at 13:28)</a>:</h4>
<p><a href="https://github.com/blitzerr/rust/blob/49920bc581743d6edb9f82fbff4cbafebc212619/compiler/rustc_trait_selection/src/traits/coherence.rs#L212-L217">one of them is here, in coherence</a></p>



<a name="236833781"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833781" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833781">(Apr 30 2021 at 13:29)</a>:</h4>
<p>note that this runs at the very end, after we have solved all the resulting obligations</p>



<a name="236833878"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833878" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833878">(Apr 30 2021 at 13:30)</a>:</h4>
<p>the other place is in the <code>evaluation_probe</code> method</p>



<a name="236833945"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236833945" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236833945">(Apr 30 2021 at 13:30)</a>:</h4>
<p>which is called from <del>two</del> 3 places:</p>



<a name="236834026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834026">(Apr 30 2021 at 13:30)</a>:</h4>
<p><a href="https://github.com/blitzerr/rust/blob/49920bc581743d6edb9f82fbff4cbafebc212619/compiler/rustc_trait_selection/src/traits/select/mod.rs#L866-L878">in <code>evaluate_candidate</code></a>, where we are testing whether a given candiate (e.g., impl) is applicable. Here we also perform all the recursive evaluation of all the obligations that result and only run leak check at the end</p>



<a name="236834089"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834089" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834089">(Apr 30 2021 at 13:31)</a>:</h4>
<p><a href="https://github.com/blitzerr/rust/blob/49920bc581743d6edb9f82fbff4cbafebc212619/compiler/rustc_trait_selection/src/traits/select/mod.rs#L1260-L1266"><code>evaluate_where_clause</code></a> -- same</p>



<a name="236834242"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834242" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834242">(Apr 30 2021 at 13:32)</a>:</h4>
<p><a href="https://github.com/blitzerr/rust/blob/49920bc581743d6edb9f82fbff4cbafebc212619/compiler/rustc_trait_selection/src/traits/select/mod.rs#L382-L387"><code>evaluate_root_obligations</code></a> -- same</p>



<a name="236834255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834255">(Apr 30 2021 at 13:32)</a>:</h4>
<p>so the point is this:</p>



<a name="236834561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834561">(Apr 30 2021 at 13:34)</a>:</h4>
<p>if we wanted to do normalization under binders, we totally can i believe</p>



<a name="236834593"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834593" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834593">(Apr 30 2021 at 13:35)</a>:</h4>
<p>it's actually probably easy</p>



<a name="236834596"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834596" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834596">(Apr 30 2021 at 13:35)</a>:</h4>
<p>Okay, cool</p>



<a name="236834618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834618">(Apr 30 2021 at 13:35)</a>:</h4>
<p>I'm debating if I should just do it right now</p>



<a name="236834624"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834624" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834624">(Apr 30 2021 at 13:35)</a>:</h4>
<p>or explain it to you :)</p>



<a name="236834638"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834638" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834638">(Apr 30 2021 at 13:35)</a>:</h4>
<p>if you want, we could hop on a zoom</p>



<a name="236834650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834650">(Apr 30 2021 at 13:35)</a>:</h4>
<p>(and anyone else who's listening :)</p>



<a name="236834659"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834659" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834659">(Apr 30 2021 at 13:35)</a>:</h4>
<p>The next problem is that we just drop the bound vars in some places</p>



<a name="236834668"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834668" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834668">(Apr 30 2021 at 13:35)</a>:</h4>
<p>I can zoom</p>



<a name="236834678"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834678" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834678">(Apr 30 2021 at 13:35)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/236834659">said</a>:</p>
<blockquote>
<p>The next problem is that we just drop the bound vars in some places</p>
</blockquote>
<p>say more?</p>



<a name="236834703"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834703" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834703">(Apr 30 2021 at 13:36)</a>:</h4>
<p>Well, so.</p>



<a name="236834714"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834714" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834714">(Apr 30 2021 at 13:36)</a>:</h4>
<p>For example</p>



<a name="236834762"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834762" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834762">(Apr 30 2021 at 13:36)</a>:</h4>
<p>Should we zoom? Might be quicker?</p>



<a name="236834812"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834812" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834812">(Apr 30 2021 at 13:36)</a>:</h4>
<p>let's do that</p>



<a name="236834831"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834831" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834831">(Apr 30 2021 at 13:36)</a>:</h4>
<p>I have a hard stop on the hour</p>



<a name="236834871"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834871" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834871">(Apr 30 2021 at 13:36)</a>:</h4>
<p>link coming :)</p>



<a name="236834893"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236834893" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236834893">(Apr 30 2021 at 13:37)</a>:</h4>
<p><a href="https://zoom.us/j/99566645565?pwd=MGc2bGtUY003aml6ZHR5b1pUdGNVQT09">https://zoom.us/j/99566645565?pwd=MGc2bGtUY003aml6ZHR5b1pUdGNVQT09</a></p>



<a name="236839022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236839022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236839022">(Apr 30 2021 at 14:04)</a>:</h4>
<p><a href="https://github.com/nikomatsakis/rust/tree/normalize-under-binder">https://github.com/nikomatsakis/rust/tree/normalize-under-binder</a> &lt;-- <span class="user-mention" data-user-id="232957">@Jack Huey</span></p>



<a name="236839057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236839057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236839057">(Apr 30 2021 at 14:04)</a>:</h4>
<p>Thanks :)</p>



<a name="236850997"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236850997" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> marmeladema <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236850997">(Apr 30 2021 at 15:14)</a>:</h4>
<p>I like how <span class="user-mention" data-user-id="116009">@nikomatsakis</span> rust fork is so old it still says " A work-in-progress programming language; not yet suitable for users " <span aria-label="big smile" class="emoji emoji-1f604" role="img" title="big smile">:big_smile:</span></p>



<a name="236857099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236857099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236857099">(Apr 30 2021 at 15:49)</a>:</h4>
<p>yeah :)</p>



<a name="236857116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236857116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236857116">(Apr 30 2021 at 15:49)</a>:</h4>
<p>that amuses me</p>



<a name="236896488"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236896488" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236896488">(Apr 30 2021 at 20:26)</a>:</h4>
<p>Ok <span class="user-mention" data-user-id="116009">@nikomatsakis</span> so the most naive implementation of this results in most tests passing, a couple dozen tests failing, and at least one test inifinitely running</p>



<a name="236896519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236896519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236896519">(Apr 30 2021 at 20:26)</a>:</h4>
<blockquote>
<p>at least one<br>
i.e. <a href="http://issue-83150.rs">issue-83150.rs</a></p>
</blockquote>



<a name="236896752"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236896752" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236896752">(Apr 30 2021 at 20:28)</a>:</h4>
<p>One example:</p>



<a name="236896782"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236896782" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236896782">(Apr 30 2021 at 20:29)</a>:</h4>
<p>For the <code>iterable.rs</code> test in the <code>generic-associated-types</code> tests</p>



<a name="236896803"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236896803" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236896803">(Apr 30 2021 at 20:29)</a>:</h4>
<p>I get several <code>the parameter type </code>T<code> may not live long enough</code></p>



<a name="236896919"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236896919" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236896919">(Apr 30 2021 at 20:30)</a>:</h4>
<p>Because of the <code>where T: 'a</code> bounds on <code>Iter&lt;'a&gt;</code></p>



<a name="236897545"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236897545" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236897545">(Apr 30 2021 at 20:34)</a>:</h4>
<p>I feel like there's implied bounds that <em>should</em> make this solvable</p>



<a name="236897560"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236897560" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236897560">(Apr 30 2021 at 20:35)</a>:</h4>
<p>Given that <code>Self</code> is <code>Vec&lt;T&gt;</code></p>



<a name="236897605"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236897605" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236897605">(Apr 30 2021 at 20:35)</a>:</h4>
<p>And we get passed a <code>&amp;'a self</code></p>



<a name="236897640"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236897640" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236897640">(Apr 30 2021 at 20:35)</a>:</h4>
<p>(<code>self: &amp;'a Self</code>)</p>



<a name="236897709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236897709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236897709">(Apr 30 2021 at 20:36)</a>:</h4>
<p>So <code>&amp;'a Vec&lt;T&gt;</code></p>



<a name="236897715"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236897715" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236897715">(Apr 30 2021 at 20:36)</a>:</h4>
<p>Which requires <code>T: 'a</code> for WF</p>



<a name="236897784"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236897784" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236897784">(Apr 30 2021 at 20:36)</a>:</h4>
<p>Sort of importantly, we <em>can't</em> write <code>where T: 'a</code> on the function because it's a trait impl and the trait doesn't know about <code>T</code></p>



<a name="236898293"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236898293" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236898293">(Apr 30 2021 at 20:41)</a>:</h4>
<p>Seeing a bunch of </p>
<div class="codehilite"><pre><span></span><code>error: internal compiler error: compiler/rustc_trait_selection/src/traits/codegen.rs:78:17: Encountered error `OutputTypeParameterMismatch...`
</code></pre></div>



<a name="236898457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236898457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236898457">(Apr 30 2021 at 20:43)</a>:</h4>
<p>On the other hand, I <em>am</em> seeing some good things. Like this:</p>
<div class="codehilite"><pre><span></span><code>-       error[E0277]: the trait bound `for&lt;&#39;b&gt; &lt;(T,) as X&lt;&#39;b, T&gt;&gt;::U: Clone` is not satisfied
+       error[E0277]: the trait bound `str: Clone` is not satisfied
2         --&gt; $DIR/hr-associated-type-bound-param-4.rs:13:14
3          |
4       LL | trait X&lt;&#39;a, T&gt;

8          |                                    ----- required by this bound in `X`
9       ...
10      LL |     type U = str;
-          |              ^^^ the trait `for&lt;&#39;b&gt; Clone` is not implemented for `&lt;(T,) as X&lt;&#39;b, T&gt;&gt;::U`
-          |
-          = help: the following implementations were found:
-                    &lt;&amp;T as Clone&gt;
+          |              ^^^ the trait `Clone` is not implemented for `str`
15
16      error: aborting due to previous error
17
</code></pre></div>



<a name="236898488"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236898488" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236898488">(Apr 30 2021 at 20:43)</a>:</h4>
<p>I.e. we get a better error that <code>str: Clone</code> doesn't hold</p>



<a name="236898978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236898978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236898978">(Apr 30 2021 at 20:47)</a>:</h4>
<p>Shoot. <code>issue-35570</code>. We're now getting a <code>the trait bound </code>(): Trait2&lt;'a&gt;<code> is not satisfied</code> error</p>



<a name="236898985"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236898985" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236898985">(Apr 30 2021 at 20:47)</a>:</h4>
<p>And...I don't see that impl...</p>



<a name="236899134"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236899134" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236899134">(Apr 30 2021 at 20:48)</a>:</h4>
<p>Ok that's a straight up fix...</p>



<a name="236899303"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236899303" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236899303">(Apr 30 2021 at 20:49)</a>:</h4>
<p>Okay, so there's a couple bugs that I have to iron out. But it looks like a lot of the test failures are because we are now <em>more correct</em></p>



<a name="236899487"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236899487" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236899487">(Apr 30 2021 at 20:50)</a>:</h4>
<p>Another one that's just awesome: issue-41366</p>



<a name="236899546"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236899546" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236899546">(Apr 30 2021 at 20:51)</a>:</h4>
<p>Before we got a couple errors. One like </p>
<div class="codehilite"><pre><span></span><code>   |     | found signature of `fn(u16) -&gt; _`
   |     expected signature of `fn(&lt;u32 as T&lt;&#39;x&gt;&gt;::V) -&gt; _`
</code></pre></div>



<a name="236899573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236899573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236899573">(Apr 30 2021 at 20:51)</a>:</h4>
<p>Another like </p>
<div class="codehilite"><pre><span></span><code>help: the trait `Sized` is not implemented for `&lt;u32 as T&lt;&#39;_&gt;&gt;::V`
</code></pre></div>



<a name="236899630"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236899630" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236899630">(Apr 30 2021 at 20:52)</a>:</h4>
<p>But we have an impl like </p>
<div class="codehilite"><pre><span></span><code>impl&lt;&#39;g&gt; T&lt;&#39;g&gt; for u32 {
    type V = u16;
}
</code></pre></div>



<a name="236899688"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236899688" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236899688">(Apr 30 2021 at 20:52)</a>:</h4>
<p>So we're now accepting what we arguably <em>should</em> have been accepting</p>



<a name="236904375"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236904375" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236904375">(Apr 30 2021 at 21:16)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/236896803">said</a>:</p>
<blockquote>
<p>I get several <code>the parameter type </code>T<code> may not live long enough</code></p>
</blockquote>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> if you get some time, I would love some thoughts on this specifically</p>



<a name="236949015"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236949015" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236949015">(May 01 2021 at 08:14)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> where's the branch, or did you push commits to my fork?</p>



<a name="236961369"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236961369" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236961369">(May 01 2021 at 11:55)</a>:</h4>
<p>I didn't push anything yet. Its basically the simple way we initially talked about</p>



<a name="236961424"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/236961424" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#236961424">(May 01 2021 at 11:56)</a>:</h4>
<p>Bound vars -&gt; placeholders. Then back</p>



<a name="237074795"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237074795" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237074795">(May 02 2021 at 19:15)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/236897545">said</a>:</p>
<blockquote>
<p>I feel like there's implied bounds that <em>should</em> make this solvable</p>
</blockquote>
<p>This is actually super related to <a href="https://github.com/rust-lang/chalk/issues/556">chalk#556</a></p>



<a name="237075099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237075099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237075099">(May 02 2021 at 19:19)</a>:</h4>
<p>There, for something like <code>for&lt;'a, T&gt; { fn(&amp;'a Foo&lt;T&gt;) }</code> we were generating a <code>WellFormed(&amp;'a Foo&lt;T&gt;)</code> clause</p>



<a name="237159662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237159662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237159662">(May 03 2021 at 13:23)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> can you push the commits?</p>



<a name="237159691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237159691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237159691">(May 03 2021 at 13:24)</a>:</h4>
<p>Yeah</p>



<a name="237159750"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237159750" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237159750">(May 03 2021 at 13:24)</a>:</h4>
<p>It'd e helpful for me to see the code / reproduce the problems</p>



<a name="237159760"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237159760" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237159760">(May 03 2021 at 13:24)</a>:</h4>
<p>Do you want to zoom again or no? I have a hard cutoff at 10:00 if we do</p>



<a name="237159876"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237159876" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237159876">(May 03 2021 at 13:25)</a>:</h4>
<p>Let's stick with Zulip</p>



<a name="237159914"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237159914" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237159914">(May 03 2021 at 13:25)</a>:</h4>
<p>better record then</p>



<a name="237159934"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237159934" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237159934">(May 03 2021 at 13:25)</a>:</h4>
<p>I'm trying to find my checkout of that branch...</p>



<a name="237159937"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237159937" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237159937">(May 03 2021 at 13:25)</a>:</h4>
<p><span aria-label="+1" class="emoji emoji-1f44d" role="img" title="+1">:+1:</span></p>



<a name="237159945"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237159945" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237159945">(May 03 2021 at 13:26)</a>:</h4>
<p><a href="https://github.com/jackh726/rust/tree/assoc-type-norm">https://github.com/jackh726/rust/tree/assoc-type-norm</a></p>



<a name="237160060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160060">(May 03 2021 at 13:26)</a>:</h4>
<p>While you're getting set up, I can briefly go over <em>one</em> of the issues I'm running into</p>



<a name="237160090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160090">(May 03 2021 at 13:27)</a>:</h4>
<p>Specifically, things like <code>the parameter type T may not live long enough</code></p>



<a name="237160181"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160181" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160181">(May 03 2021 at 13:27)</a>:</h4>
<p>In the branch, there's an <code>issue-76826-2.rs</code> file in the generic-associated-types test dir</p>



<a name="237160237"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160237" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160237">(May 03 2021 at 13:28)</a>:</h4>
<p>Which we can use as a repro</p>



<a name="237160258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160258">(May 03 2021 at 13:28)</a>:</h4>
<p>K</p>



<a name="237160277"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160277" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160277">(May 03 2021 at 13:28)</a>:</h4>
<p>Importantly, there's an associated type on <code>Iter</code> defined as <code>type Item&lt;'a&gt; where Self: 'a;</code></p>



<a name="237160298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160298">(May 03 2021 at 13:28)</a>:</h4>
<p>and a function with a return value of <code>Option&lt;Self::Item&lt;'a&gt;&gt;;</code></p>



<a name="237160323"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160323" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160323">(May 03 2021 at 13:29)</a>:</h4>
<p>(this is actually pretting similar to the <code>StreamingIterator</code> test)</p>



<a name="237160328"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160328" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160328">(May 03 2021 at 13:29)</a>:</h4>
<p>yes</p>



<a name="237160351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160351">(May 03 2021 at 13:29)</a>:</h4>
<p>what is the backtrace of the error?</p>



<a name="237160401"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160401" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160401">(May 03 2021 at 13:29)</a>:</h4>
<p>There's no backtrace?</p>



<a name="237160477"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160477" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160477">(May 03 2021 at 13:30)</a>:</h4>
<div class="codehilite"><pre><span></span><code>error[E0311]: the parameter type `T` may not live long enough
  --&gt; /home/hueyj/temp/rust/rust/src/test/ui/generic-associated-types/issue-76826-2.rs:18:5
   |
LL |   impl&lt;T&gt; Iter for Windows&lt;T&gt; {
   |        - help: consider adding an explicit lifetime bound...: `T: &#39;a`
...
LL | /     fn next&lt;&#39;a&gt;(&amp;&#39;a mut self) -&gt; Option&lt;Self::Item&lt;&#39;a&gt;&gt; {
LL | |         todo!()
LL | |     }
   | |_____^ ...so that the type `Windows&lt;T&gt;` will meet its required lifetime bounds

error[E0311]: the parameter type `T` may not live long enough
  --&gt; /home/hueyj/temp/rust/rust/src/test/ui/generic-associated-types/issue-76826-2.rs:18:17
   |
LL | impl&lt;T&gt; Iter for Windows&lt;T&gt; {
   |      - help: consider adding an explicit lifetime bound...: `T: &#39;a`
...
LL |     fn next&lt;&#39;a&gt;(&amp;&#39;a mut self) -&gt; Option&lt;Self::Item&lt;&#39;a&gt;&gt; {
   |                 ^^^^^^^^^^^^ ...so that the type `Windows&lt;T&gt;` will meet its required lifetime bounds
</code></pre></div>



<a name="237160496"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160496" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160496">(May 03 2021 at 13:30)</a>:</h4>
<p>Those are the full errors</p>



<a name="237160527"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160527" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160527">(May 03 2021 at 13:30)</a>:</h4>
<p>try <code>-Ztreat-err-as-bug</code> and <code>RUSTC_BACKTRACE=1</code> :)</p>



<a name="237160535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160535">(May 03 2021 at 13:30)</a>:</h4>
<p>but that helps</p>



<a name="237160558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160558">(May 03 2021 at 13:30)</a>:</h4>
<p>Well, I can continue</p>



<a name="237160561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160561">(May 03 2021 at 13:30)</a>:</h4>
<p>doing a build now</p>



<a name="237160589"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160589" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160589">(May 03 2021 at 13:30)</a>:</h4>
<p>And elaborate a bit more on why this happens</p>



<a name="237160636"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160636" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160636">(May 03 2021 at 13:31)</a>:</h4>
<p>ok</p>



<a name="237160659"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160659" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160659">(May 03 2021 at 13:31)</a>:</h4>
<p>So, the issue actually occurs when we type check the function on the <code>impl&lt;T&gt; Iter for Windows&lt;T&gt;</code></p>



<a name="237160712"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160712" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160712">(May 03 2021 at 13:31)</a>:</h4>
<p>When we do WF checking</p>



<a name="237160744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160744">(May 03 2021 at 13:32)</a>:</h4>
<p>yep</p>



<a name="237160824"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160824" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160824">(May 03 2021 at 13:32)</a>:</h4>
<p>So, in the branch, I've basically implemented replacing bound vars to placeholders</p>



<a name="237160835"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160835" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160835">(May 03 2021 at 13:32)</a>:</h4>
<p>and then substituting back after</p>



<a name="237160849"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160849" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160849">(May 03 2021 at 13:32)</a>:</h4>
<p>without the fanciness of inference vars yet</p>



<a name="237160872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160872">(May 03 2021 at 13:32)</a>:</h4>
<p>But that wouldn't matter here</p>



<a name="237160883"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160883" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160883">(May 03 2021 at 13:33)</a>:</h4>
<p>Anyways</p>



<a name="237160942"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160942" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160942">(May 03 2021 at 13:33)</a>:</h4>
<p>it sounds like an implied bounds problem</p>



<a name="237160955"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160955" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160955">(May 03 2021 at 13:33)</a>:</h4>
<p>yes :)</p>



<a name="237160974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160974">(May 03 2021 at 13:33)</a>:</h4>
<p>i wanted to know the backtrace so i could take a quick look at the code in question</p>



<a name="237160979"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160979" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160979">(May 03 2021 at 13:33)</a>:</h4>
<p>By the time we get to <code>Self::Iter&lt;'a&gt;</code> in <code>AssocTypeNormalizer</code></p>



<a name="237160984"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237160984" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237160984">(May 03 2021 at 13:33)</a>:</h4>
<p>but you're saying it's from the wfcheck</p>



<a name="237161001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161001">(May 03 2021 at 13:33)</a>:</h4>
<p>Yes</p>



<a name="237161220"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161220" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161220">(May 03 2021 at 13:35)</a>:</h4>
<p>Basically, the WF rules of <code>Iter&lt;'a&gt;</code> require <code>Self: 'a</code></p>



<a name="237161252"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161252" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161252">(May 03 2021 at 13:35)</a>:</h4>
<p>Which we should be able to get from the function args but aren't?</p>



<a name="237161272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161272">(May 03 2021 at 13:35)</a>:</h4>
<p>yes</p>



<a name="237161307"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161307" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161307">(May 03 2021 at 13:36)</a>:</h4>
<p>there is some logic that should handle this</p>



<a name="237161329"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161329" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161329">(May 03 2021 at 13:36)</a>:</h4>
<p>I'm not sure whether it's just not being applied in this case or something else</p>



<a name="237161457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161457">(May 03 2021 at 13:37)</a>:</h4>
<p>I definitely saw the bit of code where we add the implied bounds</p>



<a name="237161471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161471">(May 03 2021 at 13:37)</a>:</h4>
<p>forget where that was</p>



<a name="237161522"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161522" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161522">(May 03 2021 at 13:37)</a>:</h4>
<p><a href="https://github.com/jackh726/rust/blob/4a9f6b390ac35869356c51a91f274b366757e6c7/compiler/rustc_typeck/src/check/wfcheck.rs#L903">https://github.com/jackh726/rust/blob/4a9f6b390ac35869356c51a91f274b366757e6c7/compiler/rustc_typeck/src/check/wfcheck.rs#L903</a></p>



<a name="237161606"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161606" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161606">(May 03 2021 at 13:38)</a>:</h4>
<p>yeah, curious</p>



<a name="237161626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161626">(May 03 2021 at 13:38)</a>:</h4>
<p>let me poke a bit to bring this back in cache</p>



<a name="237161640"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161640" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161640">(May 03 2021 at 13:38)</a>:</h4>
<p>the build is done now</p>



<a name="237161682"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161682" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161682">(May 03 2021 at 13:38)</a>:</h4>
<p><span aria-label="+1" class="emoji emoji-1f44d" role="img" title="+1">:+1:</span></p>



<a name="237161769"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161769" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161769">(May 03 2021 at 13:39)</a>:</h4>
<p>Oh so I might be wrong...</p>



<a name="237161810"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161810" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161810">(May 03 2021 at 13:39)</a>:</h4>
<p>Maybe that obligation is being generated from the <code>&amp;'a mut Self</code></p>



<a name="237161954"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237161954" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237161954">(May 03 2021 at 13:40)</a>:</h4>
<p>err idk</p>



<a name="237162460"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237162460" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237162460">(May 03 2021 at 13:44)</a>:</h4>
<p>Woah <code>-Ztreat-err-as-bug</code> is so helpful</p>



<a name="237162557"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237162557" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237162557">(May 03 2021 at 13:45)</a>:</h4>
<p>it is very useful</p>



<a name="237162750"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237162750" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237162750">(May 03 2021 at 13:46)</a>:</h4>
<p>the backtrace is nice, but also just not having a bunch of unrelated logs</p>



<a name="237164045"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164045" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164045">(May 03 2021 at 13:55)</a>:</h4>
<p>Ok I didn't appreciate fully just how complicated the implied outlives bounds code is...</p>



<a name="237164244"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164244" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164244">(May 03 2021 at 13:57)</a>:</h4>
<p>/me hides</p>



<a name="237164341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164341">(May 03 2021 at 13:57)</a>:</h4>
<div class="codehilite"><pre><span></span><code>├─2ms DEBUG rustc_infer::infer::outlives::env add_outlives_bounds: outlives_bound=RegionSubParam(ReFree(DefId(0:15 ~ issue_76826_2[317d]::{impl#0}::next), BrNamed(DefId(0:16 ~ issue_76826_2[317d]::{impl#0}::next::&#39;a), &#39;a)), T/#0)
</code></pre></div>



<a name="237164347"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164347" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164347">(May 03 2021 at 13:57)</a>:</h4>
<p>so that is in the logs</p>



<a name="237164489"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164489" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164489">(May 03 2021 at 13:58)</a>:</h4>
<p>The obligation that we probably don't satisfy is the placeholder version?</p>



<a name="237164497"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164497" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164497">(May 03 2021 at 13:58)</a>:</h4>
<p>If I had to guess</p>



<a name="237164569"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164569" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164569">(May 03 2021 at 13:59)</a>:</h4>
<p>ah wait</p>



<a name="237164601"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164601" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164601">(May 03 2021 at 13:59)</a>:</h4>
<div class="codehilite"><pre><span></span><code>verify_generic_bound(T/#0, RePlaceholder(Placeholder { universe: U1, name: BrNamed(DefId(0:16 ~ issue_76826_2[317d]:: {impl#0}::next::&#39;a), &#39;a) })
</code></pre></div>



<a name="237164620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164620">(May 03 2021 at 13:59)</a>:</h4>
<p>what is "the placeholder version"</p>



<a name="237164644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164644">(May 03 2021 at 13:59)</a>:</h4>
<p>In <code>project.rs</code></p>



<a name="237164663"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164663" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164663">(May 03 2021 at 13:59)</a>:</h4>
<p>When we convert bound vars to placeholders</p>



<a name="237164746"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164746" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164746">(May 03 2021 at 14:00)</a>:</h4>
<p>why is this a bound variable?</p>



<a name="237164760"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164760" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164760">(May 03 2021 at 14:00)</a>:</h4>
<p>...because it's late-bound in the fn sig?</p>



<a name="237164794"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164794" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164794">(May 03 2021 at 14:00)</a>:</h4>
<p>yes</p>



<a name="237164851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164851">(May 03 2021 at 14:00)</a>:</h4>
<p>seems wrong</p>



<a name="237164866"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164866" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164866">(May 03 2021 at 14:00)</a>:</h4>
<p>something is not lining up</p>



<a name="237164875"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164875" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164875">(May 03 2021 at 14:01)</a>:</h4>
<p>How?</p>



<a name="237164902"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164902" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164902">(May 03 2021 at 14:01)</a>:</h4>
<p>the same `'a' should not be bound in one place</p>



<a name="237164929"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237164929" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237164929">(May 03 2021 at 14:01)</a>:</h4>
<p>but free in the <code>add_outlives_bound</code> logic</p>



<a name="237165070"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165070" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165070">(May 03 2021 at 14:02)</a>:</h4>
<p>I agree?</p>



<a name="237165118"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165118" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165118">(May 03 2021 at 14:02)</a>:</h4>
<p>Unless the <code>add_outlives_bound</code> logic is intended to support the function bodies?</p>



<a name="237165134"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165134" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165134">(May 03 2021 at 14:02)</a>:</h4>
<p>Which use <code>ReFree</code></p>



<a name="237165168"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165168" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165168">(May 03 2021 at 14:02)</a>:</h4>
<p>where is the projection taking place</p>



<a name="237165178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165178">(May 03 2021 at 14:02)</a>:</h4>
<p>(side note, why <code>ReFree</code> and not <code>RePlaceholder</code>)</p>



<a name="237165187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165187">(May 03 2021 at 14:02)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/237165118">said</a>:</p>
<blockquote>
<p>Unless the <code>add_outlives_bound</code> logic is intended to support the function bodies?</p>
</blockquote>
<p>it is</p>



<a name="237165207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165207">(May 03 2021 at 14:02)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/237165168">said</a>:</p>
<blockquote>
<p>where is the projection taking place</p>
</blockquote>
<p>elaborate?</p>



<a name="237165217"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165217" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165217">(May 03 2021 at 14:03)</a>:</h4>
<p>it's just... that is also ok for this wf checking I think</p>



<a name="237165517"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165517" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165517">(May 03 2021 at 14:04)</a>:</h4>
<p>I'm not familiar with this code at all, so not really sure where to begin</p>



<a name="237165535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165535">(May 03 2021 at 14:05)</a>:</h4>
<p>(with debugging)</p>



<a name="237165634"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165634" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165634">(May 03 2021 at 14:05)</a>:</h4>
<p>nm, I'm reading the logs</p>



<a name="237165642"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237165642" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237165642">(May 03 2021 at 14:05)</a>:</h4>
<p>answering my own questions :)</p>



<a name="237166087"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237166087" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237166087">(May 03 2021 at 14:09)</a>:</h4>
<p>I was trying to figure out where the normalization was taking place; the answer seems to be "a few too many places"</p>



<a name="237166091"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237166091" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237166091">(May 03 2021 at 14:09)</a>:</h4>
<p>trying a tweak</p>



<a name="237166150"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237166150" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237166150">(May 03 2021 at 14:09)</a>:</h4>
<p>Yeah, we try to normalize in a bunch of places</p>



<a name="237166948"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237166948" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237166948">(May 03 2021 at 14:15)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/237166091">said</a>:</p>
<blockquote>
<p>trying a tweak</p>
</blockquote>
<p>what tweak?</p>



<a name="237167014"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167014" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167014">(May 03 2021 at 14:16)</a>:</h4>
<p>still poking</p>



<a name="237167062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167062">(May 03 2021 at 14:16)</a>:</h4>
<p>I'll push my current diff to my branch</p>



<a name="237167110"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167110" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167110">(May 03 2021 at 14:16)</a>:</h4>
<p>I want to change gears to look at async fn in traits blockers -- oh, I geuss this kind of is one :)</p>



<a name="237167135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167135">(May 03 2021 at 14:16)</a>:</h4>
<p>Yeah, I think it is</p>



<a name="237167165"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167165" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167165">(May 03 2021 at 14:17)</a>:</h4>
<p>I personally think this is a blocker for GAT stabilization</p>



<a name="237167203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167203">(May 03 2021 at 14:17)</a>:</h4>
<p>now that I realize how close we are to closing this ICE, I very much want to do so</p>



<a name="237167209"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167209" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167209">(May 03 2021 at 14:17)</a>:</h4>
<p>But, possibly not given that other ICEs of this type happen</p>



<a name="237167233"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167233" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167233">(May 03 2021 at 14:17)</a>:</h4>
<p>I dont' consider it a GAT-specific problem</p>



<a name="237167239"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167239" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167239">(May 03 2021 at 14:17)</a>:</h4>
<p>but maybe it arises more often with GATs</p>



<a name="237167266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167266">(May 03 2021 at 14:17)</a>:</h4>
<p>Yeah, I think that's the important bit</p>



<a name="237167290"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167290" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167290">(May 03 2021 at 14:17)</a>:</h4>
<p>That it will happen more often with GATs</p>



<a name="237167350"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167350" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167350">(May 03 2021 at 14:18)</a>:</h4>
<p>(at least in my mind it would)</p>



<a name="237167391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167391">(May 03 2021 at 14:18)</a>:</h4>
<p>I do want to look at the incremental bug too though</p>



<a name="237167412"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167412" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167412">(May 03 2021 at 14:18)</a>:</h4>
<p>anyway, I pushed a commit</p>



<a name="237167424"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167424" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167424">(May 03 2021 at 14:18)</a>:</h4>
<p>I also added some more debug so let me see what those say</p>



<a name="237167536"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167536" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167536">(May 03 2021 at 14:19)</a>:</h4>
<p>I'll take a look</p>



<a name="237167553"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167553" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167553">(May 03 2021 at 14:19)</a>:</h4>
<p>I also can <em>probably</em> figure this out on my own</p>



<a name="237167565"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167565" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167565">(May 03 2021 at 14:19)</a>:</h4>
<p>my branch: normalize-under-binder</p>



<a name="237167580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167580">(May 03 2021 at 14:19)</a>:</h4>
<p>Just might take a bit for me to completely debug</p>



<a name="237167701"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167701" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167701">(May 03 2021 at 14:20)</a>:</h4>
<p>i.e. if you want to prioritize other things, that's understandable</p>



<a name="237167734"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167734" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167734">(May 03 2021 at 14:20)</a>:</h4>
<p>(I just wasn't sure if you were going to have some immediate thoughts)</p>



<a name="237167823"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167823" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167823">(May 03 2021 at 14:21)</a>:</h4>
<p>I'm not sure I undersatnd what the <code>debug!(?foo)</code> notation does</p>



<a name="237167856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167856">(May 03 2021 at 14:21)</a>:</h4>
<p>It just prints out <code>foo</code></p>



<a name="237167873"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167873" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167873">(May 03 2021 at 14:21)</a>:</h4>
<p>I expect it to be the equivalent of <code>debug!("foo={:?}", foo)</code></p>



<a name="237167881"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167881" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167881">(May 03 2021 at 14:22)</a>:</h4>
<p>Yes</p>



<a name="237167893"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167893" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167893">(May 03 2021 at 14:22)</a>:</h4>
<p>but I guess it is more like <code>debug!("{:?}", foo)</code>?</p>



<a name="237167948"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167948" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167948">(May 03 2021 at 14:22)</a>:</h4>
<p>except you also can do more fancy things with tracing too</p>



<a name="237167970"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237167970" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237167970">(May 03 2021 at 14:22)</a>:</h4>
<p>i'm not seeing it in the output either way; may be that I have to explicit revert in vscode though</p>



<a name="237168014"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237168014" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237168014">(May 03 2021 at 14:22)</a>:</h4>
<p>huh, weird</p>



<a name="237168044"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237168044" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237168044">(May 03 2021 at 14:23)</a>:</h4>
<p>It should be like <code>foo=...</code></p>



<a name="237168054"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237168054" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237168054">(May 03 2021 at 14:23)</a>:</h4>
<p>oh, wait, it's there</p>



<a name="237168076"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237168076" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237168076">(May 03 2021 at 14:23)</a>:</h4>
<p>it's just much further down than I expected :)</p>



<a name="237169069"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237169069" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237169069">(May 03 2021 at 14:30)</a>:</h4>
<p>(brb)</p>



<a name="237255738"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237255738" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237255738">(May 04 2021 at 01:31)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> that test passes given the latest commits on my branch</p>



<a name="237255751"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237255751" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237255751">(May 04 2021 at 01:31)</a>:</h4>
<p>the main change I made is doing normalization <em>after</em> liberation</p>



<a name="237255764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237255764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237255764">(May 04 2021 at 01:31)</a>:</h4>
<p>that said, there is some funny business in that <code>compare_method_receiver</code> code</p>



<a name="237255765"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237255765" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237255765">(May 04 2021 at 01:32)</a>:</h4>
<p>Woah you're on late</p>



<a name="237255810"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237255810" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237255810">(May 04 2021 at 01:32)</a>:</h4>
<p>Yes, that's what I found not too long ago</p>



<a name="237255830"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237255830" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237255830">(May 04 2021 at 01:32)</a>:</h4>
<p><a href="https://github.com/blitzerr/rust/blob/c5a8787814200846dad94b7e740c83f38d3d8c9a/compiler/rustc_typeck/src/check/wfcheck.rs#L1100-L1103">this logic looks suspicious to me</a></p>



<a name="237255835"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237255835" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237255835">(May 04 2021 at 01:32)</a>:</h4>
<p>albeit probably harmless</p>



<a name="237255842"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237255842" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237255842">(May 04 2021 at 01:32)</a>:</h4>
<p>I don't know that <code>self_ty</code> would ever have any escaping parameters</p>



<a name="237255843"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237255843" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237255843">(May 04 2021 at 01:32)</a>:</h4>
<p>unless you just made changes to <code>check_method_receiver</code></p>



<a name="237255868"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237255868" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237255868">(May 04 2021 at 01:33)</a>:</h4>
<p>I made some edits but mainly reordering things</p>



<a name="237255980"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237255980" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237255980">(May 04 2021 at 01:34)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/blob/c5a8787814200846dad94b7e740c83f38d3d8c9a/compiler/rustc_typeck/src/check/wfcheck.rs#L1095-L1097">that code looks suspicious</a></p>



<a name="237256015"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237256015" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237256015">(May 04 2021 at 01:34)</a>:</h4>
<p>The branch I pulled didn't have the normalization moved in that function</p>



<a name="237256018"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237256018" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237256018">(May 04 2021 at 01:34)</a>:</h4>
<p>oops</p>



<a name="237256021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237256021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237256021">(May 04 2021 at 01:34)</a>:</h4>
<p>not suspicious</p>



<a name="237256028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237256028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237256028">(May 04 2021 at 01:34)</a>:</h4>
<p>I just pushed a commit</p>



<a name="237256031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237256031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237256031">(May 04 2021 at 01:34)</a>:</h4>
<p>like 2 minutes ago</p>



<a name="237256039"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237256039" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237256039">(May 04 2021 at 01:34)</a>:</h4>
<p>I think that reordering was the main fix</p>



<a name="237256040"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237256040" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237256040">(May 04 2021 at 01:34)</a>:</h4>
<p>oh okay</p>



<a name="237256045"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237256045" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237256045">(May 04 2021 at 01:34)</a>:</h4>
<p>bad news is the full test file fails</p>



<a name="237256052"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237256052" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237256052">(May 04 2021 at 01:35)</a>:</h4>
<p>(not the -2 version)</p>



<a name="237256082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237256082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237256082">(May 04 2021 at 01:35)</a>:</h4>
<div class="codehilite"><pre><span></span><code>DEBUG rustc_infer::infer::canonical::query_response true_errors = [
    FulfillmentError(Obligation(predicate=Binder(TraitPredicate(&lt;[closure@/home/hueyj/temp/rust/rust/src/test/ui/generic-associated-types/issue-76826.rs:44:19: 44:50] as std::ops::FnMut&lt;(&lt;Windows&lt;i32&gt; as Iter&gt;::Item&lt;&#39;a&gt;,)&gt;&gt;), [Region(BrNamed(DefId(0:10 ~ issue_76826[317d]::Iter::for_each::&#39;a), &#39;a))]), depth=0),OutputTypeParameterMismatch(Binder(&lt;[closure@/home/hueyj/temp/rust/rust/src/test/ui/generic-associated-types/issue-76826.rs:44:19: 44:50] as std::ops::FnMut&lt;(&amp;mut [i32],)&gt;&gt;, [Region(BrAnon(0))]), Binder(&lt;[closure@/home/hueyj/temp/rust/rust/src/test/ui/generic-associated-types/issue-76826.rs:44:19: 44:50] as std::ops::FnMut&lt;(&lt;Windows&lt;i32&gt; as Iter&gt;::Item&lt;&#39;a&gt;,)&gt;&gt;, [Region(BrNamed(DefId(0:10 ~ issue_76826[317d]::Iter::for_each::&#39;a), &#39;a))]), Sorts(ExpectedFound { expected: &lt;Windows&lt;i32&gt; as Iter&gt;::Item&lt;&#39;a&gt;, found: &amp;mut [i32] }))),
]
DEBUG rustc_infer::infer::canonical::query_response make_query_response: true_errors=[
    FulfillmentError(Obligation(predicate=Binder(TraitPredicate(&lt;[closure@/home/hueyj/temp/rust/rust/src/test/ui/generic-associated-types/issue-76826.rs:44:19: 44:50] as std::ops::FnMut&lt;(&lt;Windows&lt;i32&gt; as Iter&gt;::Item&lt;&#39;a&gt;,)&gt;&gt;), [Region(BrNamed(DefId(0:10 ~ issue_76826[317d]::Iter::for_each::&#39;a), &#39;a))]), depth=0),OutputTypeParameterMismatch(Binder(&lt;[closure@/home/hueyj/temp/rust/rust/src/test/ui/generic-associated-types/issue-76826.rs:44:19: 44:50] as std::ops::FnMut&lt;(&amp;mut [i32],)&gt;&gt;, [Region(BrAnon(0))]), Binder(&lt;[closure@/home/hueyj/temp/rust/rust/src/test/ui/generic-associated-types/issue-76826.rs:44:19: 44:50] as std::ops::FnMut&lt;(&lt;Windows&lt;i32&gt; as Iter&gt;::Item&lt;&#39;a&gt;,)&gt;&gt;, [Region(BrNamed(DefId(0:10 ~ issue_76826[317d]::Iter::for_each::&#39;a), &#39;a))]), Sorts(ExpectedFound { expected: &lt;Windows&lt;i32&gt; as Iter&gt;::Item&lt;&#39;a&gt;, found: &amp;mut [i32] }))),
]
error: internal compiler error: broken MIR in DefId(0:25 ~ issue_76826[317d]::main) (NoSolution): could not prove Binder(TraitPredicate(&lt;[closure@/home/hueyj/temp/rust/rust/src/test/ui/generic-associated-types/issue-76826.rs:44:19: 44:50] as std::ops::FnMut&lt;(&lt;Windows&lt;i32&gt; as Iter&gt;::Item&lt;&#39;a&gt;,)&gt;&gt;), [Region(BrNamed(DefId(0:10 ~ issue_76826[317d]::Iter::for_each::&#39;a), &#39;a))])
</code></pre></div>



<a name="237256085"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237256085" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237256085">(May 04 2021 at 01:35)</a>:</h4>
<p>true :)</p>



<a name="237345748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237345748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237345748">(May 04 2021 at 15:24)</a>:</h4>
<p>TIL about about <code>rustc_trait_selection::traits::query::normalize::QueryNormalizer</code> and how similiar it is to <code>AssocTypeNormalizer</code></p>



<a name="237349321"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237349321" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237349321">(May 04 2021 at 15:46)</a>:</h4>
<p>Oh that calls <code>rustc_traits::normalize_projection_ty</code> which calls <code>rustc_trait_selection::traits::project::normalize_projection_type</code></p>



<a name="237349924"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237349924" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237349924">(May 04 2021 at 15:50)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> why are there so many ways to normalize types!?</p>



<a name="237466777"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237466777" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237466777">(May 05 2021 at 09:35)</a>:</h4>
<p>lol</p>



<a name="237466785"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237466785" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237466785">(May 05 2021 at 09:35)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> have you pushed latest commits?</p>



<a name="237487127"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237487127" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237487127">(May 05 2021 at 12:34)</a>:</h4>
<p>Let me do that...</p>



<a name="237487427"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237487427" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237487427">(May 05 2021 at 12:37)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> <a href="https://github.com/jackh726/rust/tree/assoc-type-norm">https://github.com/jackh726/rust/tree/assoc-type-norm</a></p>



<a name="237487602"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237487602" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237487602">(May 05 2021 at 12:38)</a>:</h4>
<p>There's still about a couple dozen tests failing. Most because output has changed.</p>



<a name="237487665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237487665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237487665">(May 05 2021 at 12:39)</a>:</h4>
<p>Was going through then and deciding if the changes were correct or not</p>



<a name="237487875"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237487875" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237487875">(May 05 2021 at 12:40)</a>:</h4>
<p>The biggest thing that I saw consistently and the span for "this type doesn't implement this trait" is now on just the function name instead of the whole function (I think)</p>



<a name="237487986"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237487986" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237487986">(May 05 2021 at 12:41)</a>:</h4>
<p>There's also one or two tests that I've had to ignore since they never complete. So have to figure out why and fix that</p>



<a name="237491057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237491057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237491057">(May 05 2021 at 13:04)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> ok I'm going to poke at it</p>



<a name="237493891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237493891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237493891">(May 05 2021 at 13:23)</a>:</h4>
<p>So <span class="user-mention" data-user-id="116009">@nikomatsakis</span>, one other sort of important change is that if we have <code>&lt;T as Trait2&lt;'y, 'z&gt;&gt;::Foo</code> (where <code>'y</code> and <code>'z</code> are bound vars), before we didn't get any errors if <code>T</code> doesn't implement <code>Trait2&lt;'y, 'z&gt;</code>; now we do</p>



<a name="237493929"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237493929" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237493929">(May 05 2021 at 13:23)</a>:</h4>
<p>interesting</p>



<a name="237493943"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237493943" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237493943">(May 05 2021 at 13:24)</a>:</h4>
<p>expected, but interesting</p>



<a name="237494008"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237494008" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237494008">(May 05 2021 at 13:24)</a>:</h4>
<p>interesting that you mention it, mostly -- where did it come up?</p>



<a name="237494033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237494033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237494033">(May 05 2021 at 13:24)</a>:</h4>
<p>I'm running <code>x.py test</code> now on your branch</p>



<a name="237494271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237494271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237494271">(May 05 2021 at 13:26)</a>:</h4>
<p>I'm sure there are going to be some tidy complaints :)</p>



<a name="237494315"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237494315" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237494315">(May 05 2021 at 13:26)</a>:</h4>
<p>Several tests have this</p>



<a name="237494407"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237494407" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237494407">(May 05 2021 at 13:26)</a>:</h4>
<p>See <code>ui/regions/regions-implied-bounds-projection-gap-hr-1.rs</code></p>



<a name="237494428"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237494428" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237494428">(May 05 2021 at 13:27)</a>:</h4>
<p>I wonder how much real code would be affected</p>



<a name="237494519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237494519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237494519">(May 05 2021 at 13:27)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/237494407">said</a>:</p>
<blockquote>
<p>See <code>ui/regions/regions-implied-bounds-projection-gap-hr-1.rs</code></p>
</blockquote>
<p>Actually, I know there's a simpler example, just have to find</p>



<a name="237494635"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237494635" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237494635">(May 05 2021 at 13:28)</a>:</h4>
<p>I was only going to bring up that test because there we <em>want</em> to test a specific lifetime outlives error. But it gets masked by the trait not implemented error</p>



<a name="237494784"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237494784" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237494784">(May 05 2021 at 13:29)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/237494428">said</a>:</p>
<blockquote>
<p>I wonder how much real code would be affected</p>
</blockquote>
<p>I'm not sure. And certainly this is probably something we <em>want</em>. But probably means we should do a crater run before merge.</p>



<a name="237495275"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495275" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495275">(May 05 2021 at 13:32)</a>:</h4>
<p>Here is an example of the span change I mentioned before:</p>
<div class="codehilite" data-code-language="Diff"><pre><span></span><code>4   LL |     fn uhoh&lt;U:Get&gt;(&amp;self, foo: U, bar: &lt;Self as Get&gt;::Value) {}
<span class="gd">-      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Get` is not implemented for `Self`</span>
<span class="gi">+      |        ^^^^ the trait `Get` is not implemented for `Self`</span>
</code></pre></div>



<a name="237495452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495452">(May 05 2021 at 13:33)</a>:</h4>
<p>ok</p>



<a name="237495466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495466">(May 05 2021 at 13:33)</a>:</h4>
<p>that looks...better than before, tbh</p>



<a name="237495536"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495536" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495536">(May 05 2021 at 13:34)</a>:</h4>
<p>I think they both are not super helpful</p>



<a name="237495542"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495542" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495542">(May 05 2021 at 13:34)</a>:</h4>
<p>I expect it occurs because the point of error is different</p>



<a name="237495579"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495579" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495579">(May 05 2021 at 13:34)</a>:</h4>
<p>Yeah, probably</p>



<a name="237495615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495615">(May 05 2021 at 13:34)</a>:</h4>
<p>I honestly think this diagnostic change is "fine"</p>



<a name="237495630"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495630" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495630">(May 05 2021 at 13:34)</a>:</h4>
<p>Okay so <code>issue-35570.rs</code> is interesting</p>



<a name="237495671"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495671" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495671">(May 05 2021 at 13:35)</a>:</h4>
<p>Since it's <code>check-pass</code> but fails with these changes</p>



<a name="237495711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495711">(May 05 2021 at 13:35)</a>:</h4>
<p>Because of "error[E0277]: the trait bound <code>(): Trait2&lt;'a&gt;</code> is not satisfied"</p>



<a name="237495815"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495815" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495815">(May 05 2021 at 13:36)</a>:</h4>
<p>how do you skip tidy when running tests??</p>



<a name="237495829"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495829" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495829">(May 05 2021 at 13:36)</a>:</h4>
<p>I guess <code>x.py test src/test/ui</code></p>



<a name="237495849"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495849" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495849">(May 05 2021 at 13:36)</a>:</h4>
<p>but I would like another choice</p>



<a name="237495891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495891">(May 05 2021 at 13:36)</a>:</h4>
<p>I just do that, yeah</p>



<a name="237495905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237495905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237495905">(May 05 2021 at 13:36)</a>:</h4>
<p>I think there's a specific way to ignore tidy</p>



<a name="237496061"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237496061" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237496061">(May 05 2021 at 13:37)</a>:</h4>
<p>I thought so but I can't find it</p>



<a name="237496063"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237496063" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237496063">(May 05 2021 at 13:37)</a>:</h4>
<p>annoying</p>



<a name="237496105"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237496105" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237496105">(May 05 2021 at 13:38)</a>:</h4>
<p>not a big deal :)</p>



<a name="237496292"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237496292" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237496292">(May 05 2021 at 13:39)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/237495711">said</a>:</p>
<blockquote>
<p>Because of "error[E0277]: the trait bound <code>(): Trait2&lt;'a&gt;</code> is not satisfied"</p>
</blockquote>
<p>For tests like these, I'm basically going one by one to decide if the intention of the test was to actually check something or to i.e. not ICE</p>



<a name="237496311"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237496311" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237496311">(May 05 2021 at 13:39)</a>:</h4>
<p>In <em>that</em> case, it was just to not ICE</p>



<a name="237496849"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237496849" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237496849">(May 05 2021 at 13:43)</a>:</h4>
<p>Output of <code>hr-associated-type-bound-param-6.rs</code> looks wrong now...</p>



<a name="237496870"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237496870" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237496870">(May 05 2021 at 13:43)</a>:</h4>
<p>"the trait bound <code>T: X&lt;'b, T&gt;</code> is not satisfied"</p>



<a name="237496909"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237496909" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237496909">(May 05 2021 at 13:44)</a>:</h4>
<p>Before it was "the trait bound <code>for&lt;'b&gt; T: X&lt;'b, T&gt;</code> is not satisfied"</p>



<a name="237498400"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237498400" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237498400">(May 05 2021 at 13:54)</a>:</h4>
<p><code>issue-44005.rs</code> is interesting</p>



<a name="237498430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237498430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237498430">(May 05 2021 at 13:54)</a>:</h4>
<p>"error: implementation of <code>Foo</code> is not general enough"</p>



<a name="237498491"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237498491" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237498491">(May 05 2021 at 13:54)</a>:</h4>
<p>There is</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="k">impl</span><span class="o">&lt;'</span><span class="na">a</span><span class="p">,</span><span class="w"> </span><span class="o">'</span><span class="na">b</span><span class="p">,</span><span class="w"> </span><span class="n">T</span>: <span class="o">'</span><span class="na">a</span><span class="o">&gt;</span><span class="w"> </span><span class="n">Foo</span><span class="o">&lt;'</span><span class="na">a</span><span class="o">&gt;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="o">&amp;'</span><span class="na">b</span><span class="w"> </span><span class="n">T</span><span class="w"></span>
</code></pre></div>



<a name="237498555"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237498555" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237498555">(May 05 2021 at 13:55)</a>:</h4>
<p>But the bounds required are <code>T: for&lt;'a&gt; Foo&lt;'a&gt;</code></p>



<a name="237498618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237498618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237498618">(May 05 2021 at 13:55)</a>:</h4>
<p>Where the <code>T</code> we want to pass there is <code>&amp;i32</code></p>



<a name="237498650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237498650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237498650">(May 05 2021 at 13:55)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> still around?</p>



<a name="237498845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237498845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237498845">(May 05 2021 at 13:57)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/issues/44005#issuecomment-326413826">https://github.com/rust-lang/rust/issues/44005#issuecomment-326413826</a></p>
<blockquote>
<p>I've not dug too deeply here. I do expect this would be addressed by the work I'm doing on reworking normalization, which will enable (among other things) normalizing under binders.</p>
</blockquote>
<p>How fitting</p>



<a name="237499577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237499577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237499577">(May 05 2021 at 14:01)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/237498430">said</a>:</p>
<blockquote>
<p>"error: implementation of <code>Foo</code> is not general enough"</p>
</blockquote>
<p>Similiar output with <code>issue-36139-normalize-closure-sig.rs</code></p>



<a name="237499961"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237499961" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237499961">(May 05 2021 at 14:03)</a>:</h4>
<p><code>issue-27901.rs</code>:<br>
"non-primitive cast: <code>for&lt;'s&gt; fn(&amp;'s str) -&gt; (&amp;'s str, &lt;&amp;'s str as Stream&gt;::Item) {f}</code> as <code>for&lt;'t&gt; fn(&amp;'t str) -&gt; (&amp;'t str, &lt;&amp;'t str as Stream&gt;::Item)</code>"</p>



<a name="237502572"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237502572" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237502572">(May 05 2021 at 14:20)</a>:</h4>
<p><code>hr-associated-type-projection-1.rs</code> is weird. We were getting something like<br>
"the trait bound <code>&lt;T as UnsafeCopy&lt;'b, T&gt;&gt;::Item: Deref</code> is not satisfied"</p>



<a name="237502646"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237502646" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237502646">(May 05 2021 at 14:20)</a>:</h4>
<p>But now we're getting "type mismatch resolving <code>&lt;T as Deref&gt;::Target == T</code>"</p>



<a name="237502829"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237502829" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237502829">(May 05 2021 at 14:21)</a>:</h4>
<p>And I think it's because <code>&lt;Self as UnsafeCopy&lt;'b, T&gt;&gt;::Item</code> is getting normalized sooner, so we end up with a bound <code>for&lt;'b&gt; T: std::ops::Deref&lt;Target = T&gt;</code></p>



<a name="237503443"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237503443" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237503443">(May 05 2021 at 14:25)</a>:</h4>
<p>Okay so....good news</p>



<a name="237503485"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237503485" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237503485">(May 05 2021 at 14:25)</a>:</h4>
<p>I've gone through all the failing tests and triaged them</p>



<a name="237503505"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237503505" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237503505">(May 05 2021 at 14:25)</a>:</h4>
<p>It looks like 5 of them now are "wrong"</p>



<a name="237503518"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237503518" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237503518">(May 05 2021 at 14:25)</a>:</h4>
<p>ui/associated-types/hr-associated-type-bound-param-6.rs<br>
-   error[E0277]: the trait bound <code>for&lt;'b&gt; T: X&lt;'b, T&gt;</code> is not satisfied<br>
+   error[E0277]: the trait bound <code>T: X&lt;'b, T&gt;</code> is not satisfied</p>
<p>ui/issues/issue-44005.rs<br>
ui/issues/issue-36139-normalize-closure-sig.rs</p>
<ul>
<li>error: implementation of <code>...</code> is not general enough</li>
</ul>
<p>ui/issues/issue-27901.rs</p>
<ul>
<li>error[E0605]: non-primitive cast</li>
</ul>
<p>ui/associated-types/hr-associated-type-projection-1.rs ??<br>
-   error[E0277]: the trait bound <code>&lt;T as UnsafeCopy&lt;'b, T&gt;&gt;::Item: Deref</code> is not satisfied<br>
+   error[E0271]: type mismatch resolving <code>&lt;T as Deref&gt;::Target == T</code></p>



<a name="237503563"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237503563" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237503563">(May 05 2021 at 14:25)</a>:</h4>
<p>Plus the 2 ignored tests</p>



<a name="237503666"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237503666" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237503666">(May 05 2021 at 14:26)</a>:</h4>
<p>But, other than that, things look better</p>



<a name="237503840"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237503840" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237503840">(May 05 2021 at 14:27)</a>:</h4>
<p>I still should try to implement the "try to normalize to an inference variable, then quantify the bound vars over the new placeholders when the normalized type is fully known and set the inference var to that"</p>



<a name="237503873"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237503873" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237503873">(May 05 2021 at 14:27)</a>:</h4>
<p>But it might not be necessary?</p>



<a name="237503946"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237503946" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237503946">(May 05 2021 at 14:28)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> maybe if you get some time, take a look at those tests?</p>



<a name="237503969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237503969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237503969">(May 05 2021 at 14:28)</a>:</h4>
<p>I've gotta call it for now :)</p>



<a name="237521696"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237521696" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237521696">(May 05 2021 at 16:06)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> will look later!</p>



<a name="237862687"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237862687" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237862687">(May 07 2021 at 17:41)</a>:</h4>
<p>Okay I have no clue what's going on with <code>issue-44005</code></p>



<a name="237862783"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237862783" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237862783">(May 07 2021 at 17:42)</a>:</h4>
<p>The issue thread had someone comment that they're still getting an error</p>



<a name="237862830"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237862830" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237862830">(May 07 2021 at 17:42)</a>:</h4>
<p>And I pasted the code into the playground, and it fails <em>sometimes</em>?</p>



<a name="237862846"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237862846" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237862846">(May 07 2021 at 17:42)</a>:</h4>
<p>Like, I've seen it fail and pass</p>



<a name="237862944"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237862944" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237862944">(May 07 2021 at 17:43)</a>:</h4>
<div class="codehilite"><pre><span></span><code>internal compiler error: compiler/rustc_trait_selection/src/traits/codegen.rs:78:17: Encountered error `OutputTypeParameterMismatch(Binder(&lt;[closure@src/lib.rs:25:19: 25:27] as std::ops::Fn&lt;(&lt;&amp;i32 as Foo&lt;&#39;_&gt;&gt;::Bar,)&gt;&gt;), Binder(&lt;[closure@src/lib.rs:25:19: 25:27] as std::ops::Fn&lt;(&amp;i32,)&gt;&gt;), Sorts(ExpectedFound { expected: &amp;i32, found: &lt;&amp;i32 as Foo&lt;&#39;_&gt;&gt;::Bar }))` selecting `Binder(&lt;[closure@src/lib.rs:25:19: 25:27] as std::ops::Fn&lt;(&amp;i32,)&gt;&gt;)` during codegen
</code></pre></div>



<a name="237863028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237863028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237863028">(May 07 2021 at 17:43)</a>:</h4>
<div class="codehilite"><pre><span></span><code> Finished dev [unoptimized + debuginfo] target(s) in 3.48s
     Running `target/debug/playground`
</code></pre></div>



<a name="237863089"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237863089" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237863089">(May 07 2021 at 17:44)</a>:</h4>
<p>Something is really weird here</p>



<a name="237863182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237863182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237863182">(May 07 2021 at 17:44)</a>:</h4>
<p>Okay, so <em>running</em> the code passes, but <em>building</em> it fails</p>



<a name="237863306"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237863306" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237863306">(May 07 2021 at 17:45)</a>:</h4>
<p>And yep, adding</p>
<div class="codehilite"><pre><span></span><code>    catalyst(&amp;0);
</code></pre></div>
<p>to <code>main</code> causes running to fail to</p>



<a name="237863359"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237863359" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237863359">(May 07 2021 at 17:46)</a>:</h4>
<p>That said, I don't think this test should pass</p>



<a name="237863458"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237863458" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237863458">(May 07 2021 at 17:46)</a>:</h4>
<p>We have <code>F: for&lt;'a&gt; Fn(&lt;T as Foo&lt;'a&gt;&gt;::Bar)</code> bound on <code>uncallable</code></p>



<a name="237863506"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237863506" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237863506">(May 07 2021 at 17:47)</a>:</h4>
<p>And an impl:</p>
<div class="codehilite"><pre><span></span><code>impl&lt;&#39;a, &#39;b, T: &#39;a&gt; Foo&lt;&#39;a&gt; for &amp;&#39;b T {
    type Bar = &amp;&#39;a T;
}
</code></pre></div>



<a name="237863676"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237863676" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237863676">(May 07 2021 at 17:48)</a>:</h4>
<p>So, the question: What lifetimes can we assign to <code>'a</code> and <code>'b</code> here to make this callable?</p>



<a name="237863776"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237863776" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237863776">(May 07 2021 at 17:48)</a>:</h4>
<p>Say we have some <code>x: &amp;'X i32</code></p>



<a name="237864073"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237864073" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237864073">(May 07 2021 at 17:50)</a>:</h4>
<p>If we subst in <code>'X</code> to the impl, we get some impl <code>Foo&lt;'a&gt; for &amp;'X T</code> where <code>(&amp;'X T): 'a</code></p>



<a name="237864085"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237864085" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237864085">(May 07 2021 at 17:50)</a>:</h4>
<p><em>ok</em></p>



<a name="237864144"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237864144" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237864144">(May 07 2021 at 17:51)</a>:</h4>
<p>But our bound is <code>for&lt;'a&gt; Fn(&lt;T as Foo&lt;'a&gt;&gt;::Bar)</code></p>



<a name="237864249"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237864249" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237864249">(May 07 2021 at 17:52)</a>:</h4>
<p>So basically, <code>'a: 'static</code> (essentially, but I don't know if we <em>actually</em> say that?)</p>



<a name="237864422"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237864422" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237864422">(May 07 2021 at 17:53)</a>:</h4>
<p>I've done a really poor job of explaining it, but I think the "implementation of <code>Foo</code> is not general enough" error is correct...</p>



<a name="237864639"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237864639" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237864639">(May 07 2021 at 17:55)</a>:</h4>
<p>Wait. The heck. The test is <code>build-pass</code></p>



<a name="237864982"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/237864982" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#237864982">(May 07 2021 at 17:57)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> would like your thoughts here (when you get time) and whether you think <a href="https://github.com/rust-lang/rust/issues/44005">#44005</a> should be reopened?</p>



<a name="238140423"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238140423" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238140423">(May 10 2021 at 13:20)</a>:</h4>
<p>looking</p>



<a name="238141972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238141972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238141972">(May 10 2021 at 13:31)</a>:</h4>
<p>I think <span class="user-mention" data-user-id="232957">@Jack Huey</span> I have to spend some time digging into that syn incremental crash</p>



<a name="238141992"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238141992" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238141992">(May 10 2021 at 13:31)</a>:</h4>
<p>that said, I'm going to try and get this build going</p>



<a name="238142005"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238142005" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238142005">(May 10 2021 at 13:31)</a>:</h4>
<p>is everything pushed?</p>



<a name="238142213"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238142213" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238142213">(May 10 2021 at 13:33)</a>:</h4>
<p>Mmm okay. Yes, everything is pushed.</p>



<a name="238142862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238142862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238142862">(May 10 2021 at 13:36)</a>:</h4>
<p>great!</p>



<a name="238142899"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238142899" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238142899">(May 10 2021 at 13:37)</a>:</h4>
<p>assoc-type-norm  ?</p>



<a name="238143278"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238143278" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238143278">(May 10 2021 at 13:39)</a>:</h4>
<p>Yes</p>



<a name="238143295"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238143295" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238143295">(May 10 2021 at 13:39)</a>:</h4>
<p>building now!</p>



<a name="238143324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238143324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238143324">(May 10 2021 at 13:40)</a>:</h4>
<p><a href="https://github.com/jackh726/rust/tree/assoc-type-norm">https://github.com/jackh726/rust/tree/assoc-type-norm</a></p>



<a name="238143554"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238143554" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238143554">(May 10 2021 at 13:41)</a>:</h4>
<p>The two issues to start with are <code>ui/issues/issue-44005.rs</code> (to verify that we actually <em>can'</em> compile this) and <code>ui/issues/issue-36139-normalize-closure-sig.rs</code> (to figure out <em>why</em> this is running into problems)</p>



<a name="238143580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238143580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238143580">(May 10 2021 at 13:41)</a>:</h4>
<p>(when you have time)</p>



<a name="238143695"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238143695" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238143695">(May 10 2021 at 13:42)</a>:</h4>
<p>ok, looking now while I wait for other builds</p>



<a name="238143751"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238143751" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238143751">(May 10 2021 at 13:42)</a>:</h4>
<p>Let me know if you have questions :)</p>



<a name="238144042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238144042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238144042">(May 10 2021 at 13:44)</a>:</h4>
<p>so, I think that <a href="https://github.com/rust-lang/rust/issues/44005">#44005</a> should <strong>not</strong> compile, at least not as is</p>



<a name="238144164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238144164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238144164">(May 10 2021 at 13:45)</a>:</h4>
<p>That was my conclusion</p>



<a name="238144193"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238144193" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238144193">(May 10 2021 at 13:45)</a>:</h4>
<p>yeah, you are correct</p>



<a name="238144974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238144974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238144974">(May 10 2021 at 13:50)</a>:</h4>
<p>otoh</p>



<a name="238145013"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238145013" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238145013">(May 10 2021 at 13:50)</a>:</h4>
<p>yes, you're also correct that <a href="https://github.com/rust-lang/rust/issues/36139">#36139</a> should compile</p>



<a name="238145028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238145028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238145028">(May 10 2021 at 13:50)</a>:</h4>
<p>let me poke at it, i have a few hunches</p>



<a name="238145210"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238145210" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238145210">(May 10 2021 at 13:52)</a>:</h4>
<p>I <em>think</em> something is happening around type generalization (during relation) that placeholder types get a new variable but bound vars do not</p>



<a name="238145290"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238145290" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238145290">(May 10 2021 at 13:52)</a>:</h4>
<p>But probably completely wrong there</p>



<a name="238145403"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238145403" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238145403">(May 10 2021 at 13:53)</a>:</h4>
<p>I'm actually not sure what your branch does</p>



<a name="238145437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238145437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238145437">(May 10 2021 at 13:53)</a>:</h4>
<p>I remember you had what seeemed to me to be a quick hack</p>



<a name="238145458"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238145458" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238145458">(May 10 2021 at 13:53)</a>:</h4>
<p>(Which was pretty clever)</p>



<a name="238145475"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238145475" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238145475">(May 10 2021 at 13:53)</a>:</h4>
<p>but which may itself be responsible for some measure of problems</p>



<a name="238145900"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238145900" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238145900">(May 10 2021 at 13:56)</a>:</h4>
<p>Well, so it replaces bound vars with placeholders, normalizes, then replaces placeholders with bound vars</p>



<a name="238145988"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238145988" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238145988">(May 10 2021 at 13:56)</a>:</h4>
<p>It <em>doesn't</em> "delay" the replacing of placeholders with bound vars if the type returned is not fully known</p>



<a name="238146011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238146011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238146011">(May 10 2021 at 13:56)</a>:</h4>
<p>That <em>could</em> be the problem</p>



<a name="238146082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238146082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238146082">(May 10 2021 at 13:57)</a>:</h4>
<p>But I was thinking the problem is because we're pushing outlives goals between to placeholders of different universes</p>



<a name="238148500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238148500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238148500">(May 10 2021 at 14:12)</a>:</h4>
<p>right, right</p>



<a name="238148502"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238148502" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238148502">(May 10 2021 at 14:12)</a>:</h4>
<p>ok</p>



<a name="238148900"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238148900" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238148900">(May 10 2021 at 14:15)</a>:</h4>
<p>So, yes <em>sort</em> of a hack, but really more of a partial implementation</p>



<a name="238149046"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238149046" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238149046">(May 10 2021 at 14:16)</a>:</h4>
<p>yeah, not so much a hack</p>



<a name="238149105"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238149105" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238149105">(May 10 2021 at 14:16)</a>:</h4>
<p>I was trying to see if the problems I'm seeing <em>would</em> be solved by delayed the quantification</p>



<a name="238149138"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238149138" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238149138">(May 10 2021 at 14:16)</a>:</h4>
<p>But I really should just devote the time to implement it</p>



<a name="238149166"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238149166" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238149166">(May 10 2021 at 14:16)</a>:</h4>
<p><em>might</em> be easier than just debugging lol</p>



<a name="238513597"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238513597" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238513597">(May 12 2021 at 17:34)</a>:</h4>
<p>Okay, thought I had a lead, but of course it isn't so simple</p>



<a name="238513612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238513612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238513612">(May 12 2021 at 17:34)</a>:</h4>
<p>so, backing up again</p>



<a name="238513681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238513681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238513681">(May 12 2021 at 17:34)</a>:</h4>
<p>When we get done with typechecking (I think), we end up with the following constraints:</p>
<div class="codehilite"><pre><span></span><code>DEBUG rustc_infer::infer::lexical_region_resolve Constraint 0 =&gt; VarSubVar(&#39;_#0r, &#39;_#4r)
DEBUG rustc_infer::infer::lexical_region_resolve Constraint 1 =&gt; VarSubVar(&#39;_#1r, &#39;_#4r)
DEBUG rustc_infer::infer::lexical_region_resolve Constraint 2 =&gt; VarSubVar(&#39;_#3r, &#39;_#1r)
DEBUG rustc_infer::infer::lexical_region_resolve Constraint 3 =&gt; VarSubVar(&#39;_#4r, &#39;_#0r)
DEBUG rustc_infer::infer::lexical_region_resolve Constraint 4 =&gt; VarSubVar(&#39;_#4r, &#39;_#1r)
DEBUG rustc_infer::infer::lexical_region_resolve Constraint 5 =&gt; RegSubVar(RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) }), &#39;_#0r)
DEBUG rustc_infer::infer::lexical_region_resolve Constraint 6 =&gt; RegSubVar(RePlaceholder(Placeholder { universe: U3, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) }), &#39;_#1r)
DEBUG rustc_infer::infer::lexical_region_resolve Constraint 7 =&gt; RegSubVar(RePlaceholder(Placeholder { universe: U4, name: BrNamed(DefId(0:14 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a), &#39;a) }), &#39;_#2r)
DEBUG rustc_infer::infer::lexical_region_resolve Constraint 8 =&gt; VarSubReg(&#39;_#0r, RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) }))
DEBUG rustc_infer::infer::lexical_region_resolve Constraint 9 =&gt; VarSubReg(&#39;_#1r, RePlaceholder(Placeholder { universe: U3, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) }))
DEBUG rustc_infer::infer::lexical_region_resolve Constraint 10 =&gt; VarSubReg(&#39;_#2r, RePlaceholder(Placeholder { universe: U4, name: BrNamed(DefId(0:14 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a), &#39;a) }))
</code></pre></div>



<a name="238513793"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238513793" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238513793">(May 12 2021 at 17:35)</a>:</h4>
<p>And we eventually get</p>
<div class="codehilite"><pre><span></span><code>DEBUG rustc_infer::infer::lexical_region_resolve lub_concrete_regions(RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) }), RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) })) = RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) })
DEBUG rustc_infer::infer::lexical_region_resolve lub_concrete_regions(RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) }), RePlaceholder(Placeholder { universe: U3, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) })) = ReStatic
DEBUG rustc_infer::infer::lexical_region_resolve region inference error at EarlyBoundRegion(/home/hueyj/temp/rust/rust/src/test/ui/issues/issue-36139-normalize-closure-sig.rs:20:5: 20:19 (#0), &quot;&#39;a&quot;) for &#39;_#0r: SubSupConflict sub: RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) }) sup: RePlaceholder(Placeholder { universe: U3, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) })
</code></pre></div>



<a name="238513804"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238513804" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238513804">(May 12 2021 at 17:35)</a>:</h4>
<p>Which is our error</p>



<a name="238514108"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238514108" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238514108">(May 12 2021 at 17:37)</a>:</h4>
<p>We basically are trying to make <code>!2_'a: !3_'a</code></p>



<a name="238514132"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238514132" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238514132">(May 12 2021 at 17:37)</a>:</h4>
<p>(terrible notation)</p>



<a name="238514325"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238514325" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238514325">(May 12 2021 at 17:38)</a>:</h4>
<p>But that turns into use checking <code>'static: !3_'a</code> which is not true</p>



<a name="238514584"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238514584" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238514584">(May 12 2021 at 17:40)</a>:</h4>
<p>Other info:</p>



<a name="238514595"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238514595" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238514595">(May 12 2021 at 17:40)</a>:</h4>
<div class="codehilite"><pre><span></span><code>&#39;_#4r == Value(ReEmpty(U0))
</code></pre></div>



<a name="238514619"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238514619" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238514619">(May 12 2021 at 17:40)</a>:</h4>
<div class="codehilite"><pre><span></span><code>&#39;_#1r == Value(ReEmpty(U3))
</code></pre></div>



<a name="238514643"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238514643" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238514643">(May 12 2021 at 17:41)</a>:</h4>
<div class="codehilite"><pre><span></span><code>&#39;_#0r == Value(ReEmpty(U2))
</code></pre></div>



<a name="238514763"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238514763" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238514763">(May 12 2021 at 17:41)</a>:</h4>
<p>And <code>'_#2r == Value(ReEmpty(U4))</code></p>



<a name="238515327"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238515327" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238515327">(May 12 2021 at 17:45)</a>:</h4>
<div class="codehilite"><pre><span></span><code>DEBUG rustc_infer::infer::lexical_region_resolve collect_errors: region error at Subtype(TypeTrace { cause: ObligationCauseData { span: /home/hueyj/temp/rust/rust/src/test/ui/issues/issue-36139-normalize-closure-sig.rs:20:5: 20:19 (#0), body_id: HirId { owner: DefId(0:16 ~ issue_36139_normalize_closure_sig[317d]::main), local_id: 23 }, code: MiscObligation }, values: TraitRefs(ExpectedFound { expected: &lt;S as ITrait&lt;RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) })&gt;&gt;, found: &lt;S as ITrait&lt;ReVar(&#39;_#0r)&gt;&gt; }) }): cannot verify that &#39;_#0r=ReStatic &lt;= RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) })
</code></pre></div>
<p><span aria-label="thinking" class="emoji emoji-1f914" role="img" title="thinking">:thinking:</span></p>



<a name="238515393"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238515393" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238515393">(May 12 2021 at 17:45)</a>:</h4>
<p>Actually I guess we get both</p>



<a name="238619626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619626">(May 13 2021 at 13:20)</a>:</h4>
<p><span aria-label="wave" class="emoji emoji-1f44b" role="img" title="wave">:wave:</span></p>



<a name="238619630"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619630" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619630">(May 13 2021 at 13:20)</a>:</h4>
<p>let's talk here</p>



<a name="238619639"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619639" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619639">(May 13 2021 at 13:20)</a>:</h4>
<p>Hi</p>



<a name="238619643"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619643" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619643">(May 13 2021 at 13:20)</a>:</h4>
<p>remind me <span class="user-mention" data-user-id="232957">@Jack Huey</span> what the tset case is lol</p>



<a name="238619676"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619676" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619676">(May 13 2021 at 13:20)</a>:</h4>
<p><code>issue-36139-normalize-closure-sig.rs</code></p>



<a name="238619735"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619735" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619735">(May 13 2021 at 13:21)</a>:</h4>
<p>also let me find which of my many rust directories this is</p>



<a name="238619749"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619749" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619749">(May 13 2021 at 13:21)</a>:</h4>
<p>haha</p>



<a name="238619776"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619776" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619776">(May 13 2021 at 13:21)</a>:</h4>
<p>I should maybe them better names than rust-{1,2,3,4,...}</p>



<a name="238619836"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619836" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619836">(May 13 2021 at 13:21)</a>:</h4>
<p>ftr, this is rust-2 :)</p>



<a name="238619891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619891">(May 13 2021 at 13:22)</a>:</h4>
<p>I've thought about having multiple directories</p>



<a name="238619905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619905">(May 13 2021 at 13:22)</a>:</h4>
<p>But I would get too confused</p>



<a name="238619967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619967">(May 13 2021 at 13:22)</a>:</h4>
<p>I used to have a persistent screen session</p>



<a name="238619986"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619986" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619986">(May 13 2021 at 13:23)</a>:</h4>
<p>and th names of rust-[0..9] would also include the current branch etc</p>



<a name="238619997"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238619997" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238619997">(May 13 2021 at 13:23)</a>:</h4>
<p>so it was pretty easy for me to remember which was which</p>



<a name="238620077"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620077" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620077">(May 13 2021 at 13:23)</a>:</h4>
<p>I also just try not to dip my toes into too many branches</p>



<a name="238620083"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620083" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620083">(May 13 2021 at 13:23)</a>:</h4>
<p>But that doesn't always work</p>



<a name="238620164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620164">(May 13 2021 at 13:24)</a>:</h4>
<p>ok, so</p>



<a name="238620179"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620179" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620179">(May 13 2021 at 13:24)</a>:</h4>
<p>I'm reproducing the problem</p>



<a name="238620201"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620201" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620201">(May 13 2021 at 13:24)</a>:</h4>
<p>let me dump some logs and read what you wrote above :)</p>



<a name="238620249"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620249" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620249">(May 13 2021 at 13:24)</a>:</h4>
<p>Ok :)</p>



<a name="238620529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620529">(May 13 2021 at 13:26)</a>:</h4>
<p>you know what would be useful</p>



<a name="238620542"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620542" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620542">(May 13 2021 at 13:27)</a>:</h4>
<p>if we included the universe of every region inference variable :/</p>



<a name="238620560"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620560" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620560">(May 13 2021 at 13:27)</a>:</h4>
<p>e.g., <code>'_#2r[U2]</code></p>



<a name="238620612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620612">(May 13 2021 at 13:27)</a>:</h4>
<p>Yes, that would</p>



<a name="238620662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620662">(May 13 2021 at 13:28)</a>:</h4>
<p>(if we have that information without resolving the var)</p>



<a name="238620721"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620721" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620721">(May 13 2021 at 13:28)</a>:</h4>
<p>I think that for <em>region variables</em> we never modify it,</p>



<a name="238620727"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620727" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620727">(May 13 2021 at 13:28)</a>:</h4>
<p>but I think we do need access to the infcx</p>



<a name="238620730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620730">(May 13 2021 at 13:28)</a>:</h4>
<p>which is the problem</p>



<a name="238620734"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620734" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620734">(May 13 2021 at 13:28)</a>:</h4>
<p>anyway... so...</p>



<a name="238620772"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620772" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620772">(May 13 2021 at 13:29)</a>:</h4>
<p>DEBUG rustc_infer::infer::lexical_region_resolve region inference error at EarlyBoundRegion(./src/test/ui/issues/issue-36139-normalize-closure-sig.rs:18:5: 18:19 (<a href="https://github.com/rust-lang/rust/issues/0">#0</a>), "'a") for '_#0r: SubSupConflict sub: RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]:<span aria-label="m" class="emoji emoji-24c2" role="img" title="m">:m:</span>:'<a href="https://github.com/rust-lang/a/issues/1">a#1</a>), 'a) }) sup: RePlaceholder(Placeholder { universe: U3, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]:<span aria-label="m" class="emoji emoji-24c2" role="img" title="m">:m:</span>:'<a href="https://github.com/rust-lang/a/issues/1">a#1</a>), 'a) })</p>



<a name="238620778"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620778" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620778">(May 13 2021 at 13:29)</a>:</h4>
<p>we get this error</p>



<a name="238620958"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238620958" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238620958">(May 13 2021 at 13:30)</a>:</h4>
<p>Yes</p>



<a name="238621140"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238621140" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238621140">(May 13 2021 at 13:31)</a>:</h4>
<p>so</p>



<a name="238621188"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238621188" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238621188">(May 13 2021 at 13:32)</a>:</h4>
<p>the thing to do is to find which is the constraint that makes the connection</p>



<a name="238621203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238621203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238621203">(May 13 2021 at 13:32)</a>:</h4>
<p>i usually just graph these out on paper</p>



<a name="238621245"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238621245" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238621245">(May 13 2021 at 13:32)</a>:</h4>
<p>Yeah, that's what I was trying to find</p>



<a name="238621324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238621324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238621324">(May 13 2021 at 13:33)</a>:</h4>
<p>I didn't get very far</p>



<a name="238621650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238621650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238621650">(May 13 2021 at 13:35)</a>:</h4>
<p>so it seems like 4 is the "lynch pin"</p>



<a name="238621708"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238621708" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238621708">(May 13 2021 at 13:36)</a>:</h4>
<p>Okay so</p>



<a name="238621759"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238621759" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238621759">(May 13 2021 at 13:36)</a>:</h4>
<p>That one I tracked down</p>



<a name="238621841"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238621841" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238621841">(May 13 2021 at 13:37)</a>:</h4>
<p>It comes from this obligation:</p>
<div class="codehilite"><pre><span></span><code>TraitPredicate(&lt;[main::{closure#0} closure_substs=(unavailable)] as std::ops::FnMut&lt;(&amp;ReVar(&#39;_#0r) mut usize,)&gt;&gt;), [])
</code></pre></div>



<a name="238621995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238621995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238621995">(May 13 2021 at 13:38)</a>:</h4>
<p>The fn sig for the closure ends up being <code>FnMut&lt;(&amp;ReVar('_#4r) mut usize,)&gt;</code></p>



<a name="238622062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622062">(May 13 2021 at 13:39)</a>:</h4>
<p>right, I'm looking</p>



<a name="238622097"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622097" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622097">(May 13 2021 at 13:39)</a>:</h4>
<p>│ │ │ ├─0ms DEBUG rustc_infer::infer::region_constraints created new region variable '_#4r in U4 with origin EarlyBoundRegion(./src/test/ui/issues/issue-36139-normalize-closure-sig.rs:18:29: 18:31 (<a href="https://github.com/rust-lang/rust/issues/0">#0</a>), "'_")</p>



<a name="238622099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622099">(May 13 2021 at 13:39)</a>:</h4>
<p>it's created there</p>



<a name="238622254"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622254" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622254">(May 13 2021 at 13:40)</a>:</h4>
<p>Is it that one?</p>



<a name="238622279"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622279" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622279">(May 13 2021 at 13:40)</a>:</h4>
<p>There end up being four different <code>4</code>s</p>



<a name="238622308"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622308" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622308">(May 13 2021 at 13:40)</a>:</h4>
<p>yaeh ok</p>



<a name="238622311"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622311" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622311">(May 13 2021 at 13:40)</a>:</h4>
<p>I was just finding that</p>



<a name="238622322"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622322" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622322">(May 13 2021 at 13:40)</a>:</h4>
<p>I thought i saw there ∑as only one</p>



<a name="238622326"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622326" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622326">(May 13 2021 at 13:40)</a>:</h4>
<p>but i misread it</p>



<a name="238622643"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622643" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622643">(May 13 2021 at 13:43)</a>:</h4>
<p>do you notice that tracing indentation is not very reliable?</p>



<a name="238622658"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622658" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622658">(May 13 2021 at 13:43)</a>:</h4>
<p>oh, is that because of RUSTC_LOG...?</p>



<a name="238622665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622665">(May 13 2021 at 13:43)</a>:</h4>
<p>i.e., some of the indentation comes from things that are not enabled?</p>



<a name="238622669"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622669" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622669">(May 13 2021 at 13:43)</a>:</h4>
<p>it's super annoying</p>



<a name="238622680"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622680" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622680">(May 13 2021 at 13:43)</a>:</h4>
<p>Yeah, I noticed that</p>



<a name="238622698"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622698" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622698">(May 13 2021 at 13:43)</a>:</h4>
<p>I don't know exactly what it's from</p>



<a name="238622769"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622769" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622769">(May 13 2021 at 13:44)</a>:</h4>
<p>I don't think I see the same thing with Chalk (though there's much less going on there)</p>



<a name="238622790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622790">(May 13 2021 at 13:44)</a>:</h4>
<p>so '4 is created as part of generalizing</p>



<a name="238622819"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622819" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622819">(May 13 2021 at 13:44)</a>:</h4>
<p>DEBUG rustc_infer::infer::sub Sub.tys([main::{closure#0} closure_substs=(unavailable)], _#0t)</p>



<a name="238622824"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622824" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622824">(May 13 2021 at 13:44)</a>:</h4>
<p>But yeah, I'll get either multiple indents for the same span or like nested indents</p>



<a name="238622847"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622847" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622847">(May 13 2021 at 13:45)</a>:</h4>
<p>yse</p>



<a name="238622861"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622861" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622861">(May 13 2021 at 13:45)</a>:</h4>
<p>I see all kinds of odd behavior really</p>



<a name="238622883"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622883" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622883">(May 13 2021 at 13:45)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238622790">said</a>:</p>
<blockquote>
<p>so '4 is created as part of generalizing</p>
</blockquote>
<p>Okay, that's what I thought I saw</p>



<a name="238622892"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238622892" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238622892">(May 13 2021 at 13:45)</a>:</h4>
<p>I've been thinking about pestering <span class="user-mention" data-user-id="307286">@Eliza Weisman</span> about it :)</p>



<a name="238623009"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623009" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623009">(May 13 2021 at 13:46)</a>:</h4>
<p>for some reason it prints the closure substs as 'unavailable'</p>



<a name="238623013"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623013" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623013">(May 13 2021 at 13:46)</a>:</h4>
<p>i'm not sure why that is</p>



<a name="238623022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623022">(May 13 2021 at 13:46)</a>:</h4>
<p>I quickly checked the tracing github but didn't find anything</p>



<a name="238623052"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623052" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623052">(May 13 2021 at 13:46)</a>:</h4>
<p>but it appears that '1 is the region of <code>x</code></p>



<a name="238623080"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623080" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623080">(May 13 2021 at 13:46)</a>:</h4>
<p>And yeah, also checked on that...was confused</p>



<a name="238623100"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623100" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623100">(May 13 2021 at 13:46)</a>:</h4>
<p>so one question is</p>



<a name="238623106"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623106" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623106">(May 13 2021 at 13:46)</a>:</h4>
<p>what signature did we decide for this closure</p>



<a name="238623121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623121">(May 13 2021 at 13:47)</a>:</h4>
<p>we only infer higher-ranked things when we can see it</p>



<a name="238623165"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623165" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623165">(May 13 2021 at 13:47)</a>:</h4>
<p>based on what I see <em>here</em> it appears that the closure signature is not higher-ranked</p>



<a name="238623190"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623190" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623190">(May 13 2021 at 13:47)</a>:</h4>
<p>That would probably cause the issue</p>



<a name="238623282"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623282" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623282">(May 13 2021 at 13:48)</a>:</h4>
<p>so, using RUSTC_LOG=rustc_typeck:<span aria-label="check" class="emoji emoji-2705" role="img" title="check">:check:</span>:closure,rustc_infer,rustc_trait_selection</p>



<a name="238623345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623345">(May 13 2021 at 13:48)</a>:</h4>
<p>I miss some emacs commands</p>



<a name="238623357"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623357" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623357">(May 13 2021 at 13:48)</a>:</h4>
<p>I should find the vscode equivalent to m-x occur</p>



<a name="238623373"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623373" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623373">(May 13 2021 at 13:49)</a>:</h4>
<p>You almost certainly can find an extension to use it</p>



<a name="238623511"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623511" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623511">(May 13 2021 at 13:50)</a>:</h4>
<p>the Filter Lines extension looks good</p>



<a name="238623520"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623520" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623520">(May 13 2021 at 13:50)</a>:</h4>
<p>I've also found Find All pretty decent for this</p>



<a name="238623573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623573">(May 13 2021 at 13:50)</a>:</h4>
<p>I wish I could get the colors from the logs to show up when I redirect into a file</p>



<a name="238623596"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623596" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623596">(May 13 2021 at 13:50)</a>:</h4>
<p>so filtering down to <code>rustc_typeck::check::closure</code></p>



<a name="238623615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623615">(May 13 2021 at 13:51)</a>:</h4>
<p>actually one second</p>



<a name="238623889"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623889" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623889">(May 13 2021 at 13:53)</a>:</h4>
<p>so it occurs to me that this might be a result of not having fully implemented the feature</p>



<a name="238623945"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238623945" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238623945">(May 13 2021 at 13:53)</a>:</h4>
<div class="codehilite"><pre><span></span><code>DEBUG rustc_typeck::check::closure check_expr_closure(expr=Expr { hir_id: HirId { owner: DefId(0:16 ~ issue_36139_normalize_closure_sig[317d]::main), local_id: 19 }, kind: Closure(Ref, FnDecl { inputs: [Ty { hir_id: HirId { owner: DefId(0:16 ~ issue_36139_normalize_closure_sig[317d]::main), local_id: 18 }, kind: Infer, span: ./src/test/ui/issues/issue-36139-normalize-closure-sig.rs:18:21: 18:22 (#0) }], output: DefaultReturn(./src/test/ui/issues/issue-36139-normalize-closure-sig.rs:18:24: 18:24 (#0)), c_variadic: false, implicit_self: None }, BodyId { hir_id: HirId { owner: DefId(0:16 ~ issue_36139_normalize_closure_sig[317d]::main), local_id: 17 } }, ./src/test/ui/issues/issue-36139-normalize-closure-sig.rs:18:20: 18:23 (#0), None), span: ./src/test/ui/issues/issue-36139-normalize-closure-sig.rs:18:20: 18:36 (#0) },expected=ExpectHasType(_#0t))
DEBUG rustc_typeck::check::closure deduce_expectations_from_expected_type(expected_ty=_#0t)
DEBUG rustc_typeck::check::closure deduce_expectations_from_obligations: obligation.predicate=Binder(TraitPredicate(&lt;_#0t as std::marker::Sized&gt;), [])
DEBUG rustc_typeck::check::closure deduce_expectations_from_obligations: obligation.predicate=Binder(TraitPredicate(&lt;_#0t as std::ops::FnMut&lt;(&amp;&#39;_#0r mut usize,)&gt;&gt;), [Region(BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a))])
DEBUG rustc_typeck::check::closure deduce_expectations_from_obligations: obligation.predicate=Binder(ProjectionPredicate(ProjectionTy { substs: [_#0t, (&amp;&#39;_#1r mut usize,)], item_def_id: DefId(2:3082 ~ core[4214]::ops::function::FnOnce::Output) }, ()), [Region(BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a))])
DEBUG rustc_typeck::check::closure deduce_sig_from_projection(Binder(ProjectionPredicate(ProjectionTy { substs: [_#0t, (&amp;&#39;_#1r mut usize,)], item_def_id: DefId(2:3082 ~ core[4214]::ops::function::FnOnce::Output) }, ()), [Region(BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a))]))
DEBUG rustc_typeck::check::closure deduce_sig_from_projection: arg_param_ty=(&amp;&#39;_#1r mut usize,)
DEBUG rustc_typeck::check::closure deduce_sig_from_projection: ret_param_ty=()
DEBUG rustc_typeck::check::closure deduce_sig_from_projection: sig=Binder(([&amp;&#39;_#1r mut usize]; c_variadic: false)-&gt;(), [Region(BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a))])
DEBUG rustc_typeck::check::closure check_closure(opt_kind=Some(FnMut), expected_sig=Some(ExpectedSig { cause_span: Some(./src/test/ui/issues/issue-36139-normalize-closure-sig.rs:18:5: 18:19 (#0)), sig: Binder(([&amp;&#39;_#1r mut usize]; c_variadic: false)-&gt;(), [Region(BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a))]) }))
DEBUG rustc_typeck::check::closure sig_of_closure_with_expectation(expected_sig=ExpectedSig { cause_span: Some(./src/test/ui/issues/issue-36139-normalize-closure-sig.rs:18:5: 18:19 (#0)), sig: Binder(([&amp;&#39;_#1r mut usize]; c_variadic: false)-&gt;(), [Region(BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a))]) })
DEBUG rustc_typeck::check::closure supplied_sig_of_closure(decl=FnDecl { inputs: [Ty { hir_id: HirId { owner: DefId(0:16 ~ issue_36139_normalize_closure_sig[317d]::main), local_id: 18 }, kind: Infer, span: ./src/test/ui/issues/issue-36139-normalize-closure-sig.rs:18:21: 18:22 (#0) }], output: DefaultReturn(./src/test/ui/issues/issue-36139-normalize-closure-sig.rs:18:24: 18:24 (#0)), c_variadic: false, implicit_self: None }, body.generator_kind=None)
DEBUG rustc_typeck::check::closure supplied_sig_of_closure: result=Binder(([_#2t]; c_variadic: false)-&gt;_#1t, [])
DEBUG rustc_typeck::check::closure check_supplied_sig_against_expectation: supplied_sig=Binder(([_#2t]; c_variadic: false)-&gt;_#1t, [])
DEBUG rustc_typeck::check::closure check_closure: ty_of_closure returns ([&amp;&#39;_#1r mut usize]; c_variadic: false)-&gt;()
DEBUG rustc_typeck::check::closure check_closure: expr_def_id=DefId(0:17 ~ issue_36139_normalize_closure_sig[317d]::main::{closure#0}), sig=Binder(([(&amp;&#39;_#1r mut usize,)]; c_variadic: false)-&gt;(), []), opt_kind=Some(FnMut)
DEBUG rustc_typeck::check::closure check_closure: expr.hir_id=HirId { owner: DefId(0:16 ~ issue_36139_normalize_closure_sig[317d]::main), local_id: 19 } closure_type=[main::{closure#0} closure_substs=(unavailable)]
</code></pre></div>



<a name="238624021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624021">(May 13 2021 at 13:54)</a>:</h4>
<p><code>deduce_expectations_from_obligations: obligation.predicate=Binder(TraitPredicate(&lt;_#0t as std::ops::FnMut&lt;(&amp;'_#0r mut usize,)&gt;&gt;)</code></p>



<a name="238624050"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624050" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624050">(May 13 2021 at 13:54)</a>:</h4>
<p>not that <code>'_#0r</code> appears free there</p>



<a name="238624222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624222">(May 13 2021 at 13:56)</a>:</h4>
<p><code>│ ├─0ms DEBUG rustc_trait_selection::traits::project folded_with_placeholders=TraitPredicate(&lt;_#0t as std::ops::FnMut&lt;(&amp;'_#0r mut usize,)&gt;&gt;)</code></p>



<a name="238624377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624377">(May 13 2021 at 13:57)</a>:</h4>
<p>ok ok</p>



<a name="238624378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624378">(May 13 2021 at 13:57)</a>:</h4>
<p>"the feature"?</p>



<a name="238624386"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624386" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624386">(May 13 2021 at 13:57)</a>:</h4>
<p>so...</p>



<a name="238624388"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624388" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624388">(May 13 2021 at 13:57)</a>:</h4>
<p>The projection normalization?</p>



<a name="238624462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624462">(May 13 2021 at 13:58)</a>:</h4>
<p>yes, but I'm not sure if what I'm saying makes sense -- or, it is partly the "half" implementation you did, but it's also a case I don't think we had fully talked through</p>



<a name="238624535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624535">(May 13 2021 at 13:59)</a>:</h4>
<p>in particular: we left out the part about mapping back from inference variables to bound variables in the case that we didn't know the answer yet</p>



<a name="238624549"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624549" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624549">(May 13 2021 at 13:59)</a>:</h4>
<p>I think we can do a small hack to fix this case</p>



<a name="238624553"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624553" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624553">(May 13 2021 at 13:59)</a>:</h4>
<p>will explain in one sec :)</p>



<a name="238624582"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624582" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624582">(May 13 2021 at 13:59)</a>:</h4>
<p>(lest I be misinterpeted, nothing there is criticizing your branch!)</p>



<a name="238624665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624665">(May 13 2021 at 14:00)</a>:</h4>
<p>No no, criticize away :)</p>



<a name="238624852"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624852" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624852">(May 13 2021 at 14:01)</a>:</h4>
<p>so the problem is that, in the course of normalizing, we create a region inference variable <code>'_0#r</code></p>



<a name="238624896"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624896" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624896">(May 13 2021 at 14:01)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238624535">said</a>:</p>
<blockquote>
<p>in particular: we left out the part about mapping back from inference variables to bound variables in the case that we didn't know the answer yet</p>
</blockquote>
<p>well, we did talk about it, but I didn't implement it...</p>



<a name="238624962"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624962" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624962">(May 13 2021 at 14:02)</a>:</h4>
<p>yes, but I think i was thinking more of type variables</p>



<a name="238624986"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238624986" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238624986">(May 13 2021 at 14:02)</a>:</h4>
<p>region variables need a bit of a special treatment, but I'l show you what i mean</p>



<a name="238625206"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625206" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625206">(May 13 2021 at 14:03)</a>:</h4>
<p>so the thing is that normally we don't ever replace region variables with anything until the very end of type checking</p>



<a name="238625215"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625215" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625215">(May 13 2021 at 14:03)</a>:</h4>
<p>we just accumulate constraints</p>



<a name="238625220"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625220" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625220">(May 13 2021 at 14:04)</a>:</h4>
<p>but we have this one weird special case</p>



<a name="238625276"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625276" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625276">(May 13 2021 at 14:04)</a>:</h4>
<p>/me hates saying things like that</p>



<a name="238625289"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625289" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625289">(May 13 2021 at 14:04)</a>:</h4>
<p>(a lot of problems go away if we adopt a more chalk-like model...)</p>



<a name="238625328"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625328" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625328">(May 13 2021 at 14:04)</a>:</h4>
<p>the problem is that if you have <code>'0: '1</code>, you dn't know whether <code>'1</code> will be equal to <code>'0</code> or not from that alone</p>



<a name="238625346"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625346" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625346">(May 13 2021 at 14:04)</a>:</h4>
<p>but often we wind up equating regions -- e.g., when we're combining invariant types</p>



<a name="238625376"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625376" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625376">(May 13 2021 at 14:05)</a>:</h4>
<p>and then we would add <code>0: 1</code> and <code>1: 0</code> at once</p>



<a name="238625395"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625395" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625395">(May 13 2021 at 14:05)</a>:</h4>
<p>in those cases, we also have a side table of unifications and we record it</p>



<a name="238625417"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625417" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625417">(May 13 2021 at 14:05)</a>:</h4>
<p>during projection, you can specifically request to normalize those equalities</p>



<a name="238625423"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625423" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625423">(May 13 2021 at 14:05)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238625220">said</a>:</p>
<blockquote>
<p>but we have this one weird special case</p>
</blockquote>
<p>And <em>you</em> get a special case. And <em>you</em></p>



<a name="238625446"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625446" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625446">(May 13 2021 at 14:05)</a>:</h4>
<p>?</p>



<a name="238625453"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625453" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625453">(May 13 2021 at 14:05)</a>:</h4>
<p>oh I get it :)</p>



<a name="238625457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625457">(May 13 2021 at 14:05)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/blob/ea8d58ea659f36bf6bc305c49bd857aa3ea227b7/compiler/rustc_trait_selection/src/traits/project.rs#L1343-L1344">https://github.com/rust-lang/rust/blob/ea8d58ea659f36bf6bc305c49bd857aa3ea227b7/compiler/rustc_trait_selection/src/traits/project.rs#L1343-L1344</a></p>



<a name="238625515"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625515" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625515">(May 13 2021 at 14:06)</a>:</h4>
<p>hmm</p>



<a name="238625518"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625518" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625518">(May 13 2021 at 14:06)</a>:</h4>
<p>hat didn't work</p>



<a name="238625533"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625533" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625533">(May 13 2021 at 14:06)</a>:</h4>
<p>anyway there is this thing called the <code>OpportunisticRegionResolver</code></p>



<a name="238625567"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625567" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625567">(May 13 2021 at 14:06)</a>:</h4>
<p>I'm about to push a commit to your branch, one sec</p>



<a name="238625589"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625589" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625589">(May 13 2021 at 14:06)</a>:</h4>
<p>Ok</p>



<a name="238625598"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625598" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625598">(May 13 2021 at 14:06)</a>:</h4>
<p>I'm kind of lost</p>



<a name="238625776"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625776" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625776">(May 13 2021 at 14:08)</a>:</h4>
<p>ps, <span class="user-group-mention" data-user-group-id="1060">@WG-rls2.0</span> -- it's so nice that rust-analyzer manages imports. <span aria-label="thank you" class="emoji emoji-1f64f" role="img" title="thank you">:thank_you:</span></p>



<a name="238625822"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625822" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625822">(May 13 2021 at 14:08)</a>:</h4>
<p>Niko I also just gave you access to my repo too</p>



<a name="238625841"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625841" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625841">(May 13 2021 at 14:08)</a>:</h4>
<p>heh wtf</p>



<a name="238625858"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625858" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625858">(May 13 2021 at 14:09)</a>:</h4>
<p>Wasn't sure if you could push to my branch</p>



<a name="238625860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625860">(May 13 2021 at 14:09)</a>:</h4>
<p>why are there so many normalizer structs</p>



<a name="238625872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625872">(May 13 2021 at 14:09)</a>:</h4>
<p>I think you were asking this same question recently</p>



<a name="238625891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625891">(May 13 2021 at 14:09)</a>:</h4>
<p>Yes haha</p>



<a name="238625921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238625921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238625921">(May 13 2021 at 14:09)</a>:</h4>
<p>I probably added them both but dear god</p>



<a name="238626817"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238626817" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238626817">(May 13 2021 at 14:16)</a>:</h4>
<p>ok so my commit didn't fix it <em>but</em>...</p>



<a name="238626833"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238626833" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238626833">(May 13 2021 at 14:16)</a>:</h4>
<p>I don't know why :)</p>



<a name="238626892"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238626892" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238626892">(May 13 2021 at 14:16)</a>:</h4>
<p>ugh</p>



<a name="238626978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238626978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238626978">(May 13 2021 at 14:17)</a>:</h4>
<p>oh wait</p>



<a name="238626983"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238626983" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238626983">(May 13 2021 at 14:17)</a>:</h4>
<p>I didn't actually build</p>



<a name="238626985"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238626985" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238626985">(May 13 2021 at 14:17)</a>:</h4>
<p>I just did x.py check</p>



<a name="238628042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238628042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238628042">(May 13 2021 at 14:24)</a>:</h4>
<p>ok, I was wrong I thikn</p>



<a name="238628092"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238628092" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238628092">(May 13 2021 at 14:24)</a>:</h4>
<p>nonetheless I pushed a commit</p>



<a name="238628103"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238628103" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238628103">(May 13 2021 at 14:24)</a>:</h4>
<p>digging a bit more but i have to change gears</p>



<a name="238628233"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238628233" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238628233">(May 13 2021 at 14:25)</a>:</h4>
<p>er, I didn't</p>



<a name="238628238"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238628238" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238628238">(May 13 2021 at 14:25)</a>:</h4>
<p>because the push failed</p>



<a name="238628254"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238628254" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238628254">(May 13 2021 at 14:25)</a>:</h4>
<p>oh prob because i didn't accept your invite</p>



<a name="238628312"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238628312" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238628312">(May 13 2021 at 14:26)</a>:</h4>
<p>I was about to ask</p>



<a name="238628315"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238628315" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238628315">(May 13 2021 at 14:26)</a>:</h4>
<p>also, was I wrong, or was there 2 problems</p>



<a name="238628317"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238628317" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238628317">(May 13 2021 at 14:26)</a>:</h4>
<p>checing something</p>



<a name="238628399"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238628399" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238628399">(May 13 2021 at 14:26)</a>:</h4>
<p>Gosh I'm so amazed at how fast you were able to dig into this and find a potential solution</p>



<a name="238630988"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238630988" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238630988">(May 13 2021 at 14:45)</a>:</h4>
<p><em>oh</em></p>



<a name="238631000"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631000" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631000">(May 13 2021 at 14:45)</a>:</h4>
<p>so i'm not wrong about the <em>general problem</em></p>



<a name="238631016"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631016" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631016">(May 13 2021 at 14:45)</a>:</h4>
<p>it's just that the opportunistic region resolver isn't good enough</p>



<a name="238631042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631042">(May 13 2021 at 14:45)</a>:</h4>
<p>it only works for <em>two inference variables</em> equated together</p>



<a name="238631055"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631055" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631055">(May 13 2021 at 14:45)</a>:</h4>
<p>it doesn't work for <em>inference variables</em> equated with <em>placeholders</em></p>



<a name="238631072"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631072" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631072">(May 13 2021 at 14:45)</a>:</h4>
<p><code>Equate.regions(RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::'a#1), 'a) }), '_#0r)</code></p>



<a name="238631077"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631077" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631077">(May 13 2021 at 14:45)</a>:</h4>
<p>there's no deep reason for that</p>



<a name="238631167"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631167" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631167">(May 13 2021 at 14:46)</a>:</h4>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="w">    </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">make_eqregion</span><span class="p">(</span><span class="w"></span>
<span class="w">        </span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="bp">self</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="n">origin</span>: <span class="nc">SubregionOrigin</span><span class="o">&lt;'</span><span class="na">tcx</span><span class="o">&gt;</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="n">sub</span>: <span class="nc">Region</span><span class="o">&lt;'</span><span class="na">tcx</span><span class="o">&gt;</span><span class="p">,</span><span class="w"></span>
<span class="w">        </span><span class="n">sup</span>: <span class="nc">Region</span><span class="o">&lt;'</span><span class="na">tcx</span><span class="o">&gt;</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="n">sub</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">sup</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">            </span><span class="c1">// Eventually, it would be nice to add direct support for</span>
<span class="w">            </span><span class="c1">// equating regions.</span>
<span class="w">            </span><span class="bp">self</span><span class="p">.</span><span class="n">make_subregion</span><span class="p">(</span><span class="n">origin</span><span class="p">.</span><span class="n">clone</span><span class="p">(),</span><span class="w"> </span><span class="n">sub</span><span class="p">,</span><span class="w"> </span><span class="n">sup</span><span class="p">);</span><span class="w"></span>
<span class="w">            </span><span class="bp">self</span><span class="p">.</span><span class="n">make_subregion</span><span class="p">(</span><span class="n">origin</span><span class="p">,</span><span class="w"> </span><span class="n">sup</span><span class="p">,</span><span class="w"> </span><span class="n">sub</span><span class="p">);</span><span class="w"></span>

<span class="w">            </span><span class="k">if</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="p">(</span><span class="n">ty</span>::<span class="n">ReVar</span><span class="p">(</span><span class="n">sub</span><span class="p">),</span><span class="w"> </span><span class="n">ty</span>::<span class="n">ReVar</span><span class="p">(</span><span class="n">sup</span><span class="p">))</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">sub</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="n">sup</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">                </span><span class="n">debug</span><span class="o">!</span><span class="p">(</span><span class="s">"make_eqregion: uniying {:?} with {:?}"</span><span class="p">,</span><span class="w"> </span><span class="n">sub</span><span class="p">,</span><span class="w"> </span><span class="n">sup</span><span class="p">);</span><span class="w"></span>
<span class="w">                </span><span class="bp">self</span><span class="p">.</span><span class="n">unification_table</span><span class="p">().</span><span class="k">union</span><span class="p">(</span><span class="n">sub</span><span class="p">,</span><span class="w"> </span><span class="n">sup</span><span class="p">);</span><span class="w"></span>
<span class="w">                </span><span class="bp">self</span><span class="p">.</span><span class="n">any_unifications</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span><span class="w"></span>
<span class="w">            </span><span class="p">}</span><span class="w"></span>
<span class="w">        </span><span class="p">}</span><span class="w"></span>
<span class="w">    </span><span class="p">}</span><span class="w"></span>
</code></pre></div>



<a name="238631178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631178">(May 13 2021 at 14:46)</a>:</h4>
<p>that last <code>if let</code> is the code I am talking about</p>



<a name="238631252"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631252" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631252">(May 13 2021 at 14:46)</a>:</h4>
<p><em>really</em> the opportunistic region resolver do a quick SCC search on the region constraint graph</p>



<a name="238631256"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631256" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631256">(May 13 2021 at 14:46)</a>:</h4>
<p>and not use that hacky table</p>



<a name="238631271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631271">(May 13 2021 at 14:47)</a>:</h4>
<p>that would probably not be too expensive and would be more general</p>



<a name="238631302"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631302" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631302">(May 13 2021 at 14:47)</a>:</h4>
<p>well, it might be expensive lol</p>



<a name="238631346"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631346" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631346">(May 13 2021 at 14:47)</a>:</h4>
<p>anyway <span class="user-mention" data-user-id="232957">@Jack Huey</span> maybe that helps you figure out next steps :)</p>



<a name="238631364"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631364" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631364">(May 13 2021 at 14:47)</a>:</h4>
<p>uh</p>



<a name="238631386"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631386" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631386">(May 13 2021 at 14:47)</a>:</h4>
<p>not sure about that</p>



<a name="238631399"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631399" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631399">(May 13 2021 at 14:47)</a>:</h4>
<p>But I can try</p>



<a name="238631456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631456">(May 13 2021 at 14:48)</a>:</h4>
<p>I can be a bit more detailed if you'd like :)</p>



<a name="238631457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631457">(May 13 2021 at 14:48)</a>:</h4>
<p>I'm still very lost</p>



<a name="238631472"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631472" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631472">(May 13 2021 at 14:48)</a>:</h4>
<p>ok, let's talk more tomorrow or later</p>



<a name="238631508"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631508" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631508">(May 13 2021 at 14:48)</a>:</h4>
<p>Tomorrow morning would be good</p>



<a name="238631537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238631537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238631537">(May 13 2021 at 14:48)</a>:</h4>
<p>ok</p>



<a name="238679377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238679377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238679377">(May 13 2021 at 20:52)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238624852">said</a>:</p>
<blockquote>
<p>so the problem is that, in the course of normalizing, we create a region inference variable <code>'_0#r</code></p>
</blockquote>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I'm not sure this is right...</p>



<a name="238679421"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238679421" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238679421">(May 13 2021 at 20:52)</a>:</h4>
<p>I think that variable gets created from the canonicalization of the closure function sig</p>



<a name="238679443"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238679443" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238679443">(May 13 2021 at 20:53)</a>:</h4>
<p>Do you meant <code>'_4#r</code>?</p>



<a name="238683577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238683577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238683577">(May 13 2021 at 21:23)</a>:</h4>
<p>We start with</p>
<div class="codehilite"><pre><span></span><code>│ ├─0ms DEBUG rustc_trait_selection::traits::project with_placeholders=TraitPredicate(&lt;_#0t as std::ops::FnMut&lt;(&lt;S as ITrait&lt;RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:15 ~ issue_36139_normalize_closure_sig[317d]::m::&#39;a#1), &#39;a) })&gt;&gt;::Item,)&gt;&gt;)
</code></pre></div>



<a name="238683604"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238683604" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238683604">(May 13 2021 at 21:23)</a>:</h4>
<p>Hmm</p>



<a name="238683765"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238683765" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238683765">(May 13 2021 at 21:24)</a>:</h4>
<p>And we finish with</p>
<div class="codehilite"><pre><span></span><code>│ ├─1ms DEBUG rustc_trait_selection::traits::project folded_with_placeholders=TraitPredicate(&lt;_#0t as std::ops::FnMut&lt;(&amp;&#39;_#0r mut usize,)&gt;&gt;)
</code></pre></div>



<a name="238683811"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238683811" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238683811">(May 13 2021 at 21:25)</a>:</h4>
<p>So yes, it does get created during normalization</p>



<a name="238685188"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238685188" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238685188">(May 13 2021 at 21:38)</a>:</h4>
<p>right</p>



<a name="238685238"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238685238" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238685238">(May 13 2021 at 21:39)</a>:</h4>
<p>Digging into this now</p>



<a name="238685295"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238685295" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238685295">(May 13 2021 at 21:39)</a>:</h4>
<p>I don't quite understand <em>why</em> being more eager here in terms of resolving regions during normalization will help</p>



<a name="238685306"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238685306" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238685306">(May 13 2021 at 21:39)</a>:</h4>
<p>But I'm just going with it :)</p>



<a name="238693632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238693632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238693632">(May 13 2021 at 23:00)</a>:</h4>
<p>Ok I think I see what's going on</p>



<a name="238771424"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238771424" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238771424">(May 14 2021 at 14:01)</a>:</h4>
<p>want to continue with this?</p>



<a name="238772294"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772294" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772294">(May 14 2021 at 14:07)</a>:</h4>
<p>Sure</p>



<a name="238772313"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772313" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772313">(May 14 2021 at 14:07)</a>:</h4>
<p>Hi <span class="user-mention" data-user-id="116009">@nikomatsakis</span></p>



<a name="238772397"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772397" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772397">(May 14 2021 at 14:08)</a>:</h4>
<p>Hey!</p>



<a name="238772407"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772407" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772407">(May 14 2021 at 14:08)</a>:</h4>
<p>So, I'm pretty sure I understand everything you said now :)</p>



<a name="238772416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772416">(May 14 2021 at 14:08)</a>:</h4>
<p>So you understand a bit more why this is important</p>



<a name="238772417"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772417" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772417">(May 14 2021 at 14:08)</a>:</h4>
<p>ok</p>



<a name="238772425"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772425" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772425">(May 14 2021 at 14:08)</a>:</h4>
<p>did you do any coding?</p>



<a name="238772439"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772439" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772439">(May 14 2021 at 14:08)</a>:</h4>
<p>Slightly</p>



<a name="238772444"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772444" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772444">(May 14 2021 at 14:08)</a>:</h4>
<p>I could kind of walk you through what i think I would do</p>



<a name="238772451"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772451" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772451">(May 14 2021 at 14:08)</a>:</h4>
<p>Doing a bit now</p>



<a name="238772456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772456">(May 14 2021 at 14:08)</a>:</h4>
<p>Sure</p>



<a name="238772509"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772509" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772509">(May 14 2021 at 14:09)</a>:</h4>
<p>I figured in <code>opportunistic_resolve_var</code>, I could do the SCC search</p>



<a name="238772624"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772624" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772624">(May 14 2021 at 14:09)</a>:</h4>
<p>yeah so ... we could</p>



<a name="238772643"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772643" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772643">(May 14 2021 at 14:09)</a>:</h4>
<p>but I'm not sure we <em>should</em></p>



<a name="238772650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772650">(May 14 2021 at 14:09)</a>:</h4>
<p>I'm concerned about the performance</p>



<a name="238772662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772662">(May 14 2021 at 14:09)</a>:</h4>
<p>Hmm</p>



<a name="238772733"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772733" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772733">(May 14 2021 at 14:10)</a>:</h4>
<p>So, I also wanted to make sure that <code>make_eqregion</code> always uses root vars</p>



<a name="238772789"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772789" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772789">(May 14 2021 at 14:10)</a>:</h4>
<p>another option</p>



<a name="238772806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772806">(May 14 2021 at 14:10)</a>:</h4>
<p>So, if a var is resolved to anything other than another var, it should be quick to find</p>



<a name="238772817"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772817" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772817">(May 14 2021 at 14:10)</a>:</h4>
<p>would be to modify the region inference equivalence table</p>



<a name="238772909"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772909" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772909">(May 14 2021 at 14:11)</a>:</h4>
<p>That was the other thing</p>



<a name="238772921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772921">(May 14 2021 at 14:11)</a>:</h4>
<p>I was looking how this is done with types</p>



<a name="238772944"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772944" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772944">(May 14 2021 at 14:11)</a>:</h4>
<p>right</p>



<a name="238772951"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238772951" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238772951">(May 14 2021 at 14:11)</a>:</h4>
<p>so we could use roughly that approach</p>



<a name="238773001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773001">(May 14 2021 at 14:12)</a>:</h4>
<p>basically the unification engine has the idea of a "value" for a region</p>



<a name="238773030"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773030" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773030">(May 14 2021 at 14:12)</a>:</h4>
<p>(it's a bit silly, probably ideal would be that we map each type to an integer,</p>



<a name="238773061"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773061" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773061">(May 14 2021 at 14:12)</a>:</h4>
<p>and use those as keys to the unification table)</p>



<a name="238773094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773094">(May 14 2021 at 14:12)</a>:</h4>
<p>or make the unification table a hashmap keyed by a generic <code>T</code></p>



<a name="238773100"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773100" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773100">(May 14 2021 at 14:12)</a>:</h4>
<p>but anyway we're not refactoring <em>that</em> now</p>



<a name="238773140"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773140" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773140">(May 14 2021 at 14:13)</a>:</h4>
<p>(I think at some point there <em>is</em> a unification table keyed by <code>T</code>)</p>



<a name="238773204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773204">(May 14 2021 at 14:13)</a>:</h4>
<p>it's a bit of a hodgepodge</p>



<a name="238773207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773207">(May 14 2021 at 14:13)</a>:</h4>
<p>anyway doesn't matter</p>



<a name="238773212"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773212" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773212">(May 14 2021 at 14:13)</a>:</h4>
<p>let's make it more of one</p>



<a name="238773221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773221">(May 14 2021 at 14:13)</a>:</h4>
<p>So, <code>TypeVariableStorage</code> has both <code>eq_relations</code> and <code>sub_relations</code></p>



<a name="238773231"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773231" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773231">(May 14 2021 at 14:14)</a>:</h4>
<p>so, I think the SCC is the "right" thing <em>but</em></p>



<a name="238773280"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773280" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773280">(May 14 2021 at 14:14)</a>:</h4>
<p>we call that opportunistic resolve quite frequently</p>



<a name="238773324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773324">(May 14 2021 at 14:14)</a>:</h4>
<p>ideally we'd do something clever about just looking at the relations constructed recently</p>



<a name="238773355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773355">(May 14 2021 at 14:14)</a>:</h4>
<p>but in the short term, I think it will suffice to extend the unification table</p>



<a name="238773358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773358">(May 14 2021 at 14:14)</a>:</h4>
<p>and it wouldn't be very hard</p>



<a name="238773374"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773374" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773374">(May 14 2021 at 14:14)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238773221">said</a>:</p>
<blockquote>
<p>So, <code>TypeVariableStorage</code> has both <code>eq_relations</code> and <code>sub_relations</code></p>
</blockquote>
<p>yes, that's not realted to us</p>



<a name="238773422"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773422" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773422">(May 14 2021 at 14:15)</a>:</h4>
<p>Well, I mean, it's for types. But the purpose is the same, right</p>



<a name="238773688"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773688" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773688">(May 14 2021 at 14:16)</a>:</h4>
<p>what I mean is</p>



<a name="238773694"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773694" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773694">(May 14 2021 at 14:17)</a>:</h4>
<p>the <code>sub_relations</code> is not relevant to us</p>



<a name="238773712"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773712" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773712">(May 14 2021 at 14:17)</a>:</h4>
<p>the <code>eq_relations</code> is</p>



<a name="238773825"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773825" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773825">(May 14 2021 at 14:17)</a>:</h4>
<p><code>sub_relations</code> is essentially the <code>unification_table</code> in <code>RegionConstraintsCollector</code> now</p>



<a name="238773881"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773881" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773881">(May 14 2021 at 14:18)</a>:</h4>
<p>in what sense?</p>



<a name="238773902"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773902" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773902">(May 14 2021 at 14:18)</a>:</h4>
<p>it has a very different purpose</p>



<a name="238773927"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773927" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773927">(May 14 2021 at 14:18)</a>:</h4>
<p>the way that types work:</p>



<a name="238773948"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238773948" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238773948">(May 14 2021 at 14:18)</a>:</h4>
<p>so, the idea is that each unification key has an associated <em>value</em></p>



<a name="238774022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774022">(May 14 2021 at 14:19)</a>:</h4>
<p>it is specified in the impl of <code>UnifyKey</code></p>



<a name="238774035"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774035" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774035">(May 14 2021 at 14:19)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/blob/24379879acc0959e8ae0f3c19d249b3beb278836/compiler/rustc_middle/src/infer/unify_key.rs#L40-L51">impl for ty::RegionVid</a></p>



<a name="238774067"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774067" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774067">(May 14 2021 at 14:19)</a>:</h4>
<p>when you unify two variables, you also unify their <em>values</em></p>



<a name="238774093"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774093" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774093">(May 14 2021 at 14:19)</a>:</h4>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="cp">#[derive(PartialEq, Copy, Clone, Debug)]</span><span class="w"></span>
<span class="k">pub</span><span class="w"> </span><span class="k">struct</span> <span class="nc">RegionVidKey</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="sd">/// The minimum region vid in the unification set. This is needed</span>
<span class="w">    </span><span class="sd">/// to have a canonical name for a type to prevent infinite</span>
<span class="w">    </span><span class="sd">/// recursion.</span>
<span class="w">    </span><span class="k">pub</span><span class="w"> </span><span class="n">min_vid</span>: <span class="nc">ty</span>::<span class="n">RegionVid</span><span class="p">,</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>

<span class="k">impl</span><span class="w"> </span><span class="n">UnifyValue</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">RegionVidKey</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="k">type</span> <span class="nc">Error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">NoError</span><span class="p">;</span><span class="w"></span>

<span class="w">    </span><span class="k">fn</span> <span class="nf">unify_values</span><span class="p">(</span><span class="n">value1</span>: <span class="kp">&amp;</span><span class="nc">Self</span><span class="p">,</span><span class="w"> </span><span class="n">value2</span>: <span class="kp">&amp;</span><span class="nc">Self</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nb">Result</span><span class="o">&lt;</span><span class="bp">Self</span><span class="p">,</span><span class="w"> </span><span class="n">NoError</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="kd">let</span><span class="w"> </span><span class="n">min_vid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">value1</span><span class="p">.</span><span class="n">min_vid</span><span class="p">.</span><span class="n">index</span><span class="p">()</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">value2</span><span class="p">.</span><span class="n">min_vid</span><span class="p">.</span><span class="n">index</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">            </span><span class="n">value1</span><span class="p">.</span><span class="n">min_vid</span><span class="w"></span>
<span class="w">        </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">            </span><span class="n">value2</span><span class="p">.</span><span class="n">min_vid</span><span class="w"></span>
<span class="w">        </span><span class="p">};</span><span class="w"></span>

<span class="w">        </span><span class="nb">Ok</span><span class="p">(</span><span class="n">RegionVidKey</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">min_vid</span><span class="w"> </span><span class="p">})</span><span class="w"></span>
<span class="w">    </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>



<a name="238774121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774121">(May 14 2021 at 14:19)</a>:</h4>
<p>for region variables today, we track the minimum index</p>



<a name="238774133"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774133" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774133">(May 14 2021 at 14:19)</a>:</h4>
<p>so that we have something canonical</p>



<a name="238774163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774163">(May 14 2021 at 14:20)</a>:</h4>
<p>this is .. hmm. I'm not sure why we do that, tbqh, given that we have a root variable already</p>



<a name="238774225"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774225" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774225">(May 14 2021 at 14:20)</a>:</h4>
<p>it doesn't really matter which one it is, and either way it can change as we do unification</p>



<a name="238774246"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774246" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774246">(May 14 2021 at 14:20)</a>:</h4>
<p>maybe the API didn't expose the root</p>



<a name="238774269"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774269" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774269">(May 14 2021 at 14:20)</a>:</h4>
<p>in any case, for <em>types</em>, we do something a bit different</p>



<a name="238774368"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774368" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774368">(May 14 2021 at 14:21)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/blob/24379879acc0959e8ae0f3c19d249b3beb278836/compiler/rustc_infer/src/infer/type_variable.rs#L400-L412">impl for TyVidEqKey</a></p>



<a name="238774399"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774399" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774399">(May 14 2021 at 14:21)</a>:</h4>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="cp">#[derive(Copy, Clone, Debug)]</span><span class="w"></span>
<span class="k">pub</span><span class="w"> </span><span class="k">enum</span> <span class="nc">TypeVariableValue</span><span class="o">&lt;'</span><span class="na">tcx</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">Known</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">value</span>: <span class="nc">Ty</span><span class="o">&lt;'</span><span class="na">tcx</span><span class="o">&gt;</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
<span class="w">    </span><span class="n">Unknown</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">universe</span>: <span class="nc">ty</span>::<span class="n">UniverseIndex</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>



<a name="238774479"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774479" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774479">(May 14 2021 at 14:21)</a>:</h4>
<p>That's only for <code>eq_relations</code></p>



<a name="238774483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774483">(May 14 2021 at 14:21)</a>:</h4>
<p>basically when you unify two variables, their value must be the same (or both unknown)</p>



<a name="238774493"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774493" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774493">(May 14 2021 at 14:21)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238774479">said</a>:</p>
<blockquote>
<p>That's only for <code>eq_relations</code></p>
</blockquote>
<p>that's the one to look at</p>



<a name="238774523"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774523" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774523">(May 14 2021 at 14:22)</a>:</h4>
<p>For <code>sub_relations</code> the value is just <code>()</code></p>



<a name="238774533"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774533" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774533">(May 14 2021 at 14:22)</a>:</h4>
<p>it tells you when two type variables ust be equal</p>



<a name="238774576"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774576" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774576">(May 14 2021 at 14:22)</a>:</h4>
<p>yes, because <code>sub_relations</code> serves a different purpose</p>



<a name="238774637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774637">(May 14 2021 at 14:22)</a>:</h4>
<p>(I guess I'm just trying to figure out why types have two tables and <code>sub</code> is similar to the current region table and <code>eq</code> we want)</p>



<a name="238774673"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774673" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774673">(May 14 2021 at 14:23)</a>:</h4>
<p>What is <code>sub_relations</code> for?</p>



<a name="238774885"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774885" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774885">(May 14 2021 at 14:24)</a>:</h4>
<p>it is to deal with the occurs check</p>



<a name="238774907"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774907" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774907">(May 14 2021 at 14:24)</a>:</h4>
<p>ah</p>



<a name="238774918"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774918" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774918">(May 14 2021 at 14:24)</a>:</h4>
<p>when you have <code>T1 &lt;: T2</code> (but not necessarily <code>T1 = T2</code>), we unify them in the sub-relations</p>



<a name="238774950"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774950" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774950">(May 14 2021 at 14:25)</a>:</h4>
<p>we use that to get a root variable during the occurs check</p>



<a name="238774970"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238774970" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238774970">(May 14 2021 at 14:25)</a>:</h4>
<p>so that T1 cannot be assigned a value that contains T2 or vice versa</p>



<a name="238775060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775060">(May 14 2021 at 14:25)</a>:</h4>
<p>Okay so regions, we basically want to make the unification table like <code>eq_relations</code></p>



<a name="238775080"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775080" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775080">(May 14 2021 at 14:26)</a>:</h4>
<p>closer, anyway</p>



<a name="238775129"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775129" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775129">(May 14 2021 at 14:26)</a>:</h4>
<p>we currently store the universe elsewhere</p>



<a name="238775164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775164">(May 14 2021 at 14:26)</a>:</h4>
<p>but we could use an <code>Option&lt;ty::Region&lt;'tcx&gt;&gt;</code> I imagine</p>



<a name="238775214"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775214" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775214">(May 14 2021 at 14:26)</a>:</h4>
<p>so that when you unify a variable V with some non-variable region R, we use that</p>



<a name="238775254"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775254" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775254">(May 14 2021 at 14:27)</a>:</h4>
<p>and when we unify two variables V1 and V2, we merge their values</p>



<a name="238775303"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775303" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775303">(May 14 2021 at 14:27)</a>:</h4>
<p>one tricky bit: if they are both Some, that's an error, but we will detect and report it later</p>



<a name="238775315"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775315" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775315">(May 14 2021 at 14:27)</a>:</h4>
<p>we can either return an Err</p>



<a name="238775338"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775338" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775338">(May 14 2021 at 14:27)</a>:</h4>
<p>which will make the unification fail, and we just ignore that, I guess</p>



<a name="238775455"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775455" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775455">(May 14 2021 at 14:28)</a>:</h4>
<p>or we could just pick one I guess</p>



<a name="238775461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775461">(May 14 2021 at 14:28)</a>:</h4>
<p>but that's weird</p>



<a name="238775546"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775546" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775546">(May 14 2021 at 14:28)</a>:</h4>
<p>Why does <code>unify_values</code> return a <code>Result&lt;Self, NoError&gt;</code></p>



<a name="238775571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775571">(May 14 2021 at 14:28)</a>:</h4>
<p>Why not either just <code>Self</code> or <code>Result&lt;Self, E&gt;</code></p>



<a name="238775592"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775592" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775592">(May 14 2021 at 14:29)</a>:</h4>
<p>because sometimes the values can't be unified</p>



<a name="238775618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775618">(May 14 2021 at 14:29)</a>:</h4>
<p>what do you mean by <code>NoError</code>?</p>



<a name="238775644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775644">(May 14 2021 at 14:29)</a>:</h4>
<p><code>NoError</code> is in ena</p>



<a name="238775655"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775655" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775655">(May 14 2021 at 14:29)</a>:</h4>
<p>It can't be instantiated</p>



<a name="238775674"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775674" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775674">(May 14 2021 at 14:29)</a>:</h4>
<p>ah, yes, so</p>



<a name="238775688"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775688" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775688">(May 14 2021 at 14:29)</a>:</h4>
<p>that is basically <code>!</code></p>



<a name="238775700"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775700" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775700">(May 14 2021 at 14:29)</a>:</h4>
<p>the reason type variables return <code>!</code></p>



<a name="238775717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775717">(May 14 2021 at 14:30)</a>:</h4>
<p>is because we have another layer on top of this</p>



<a name="238775795"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775795" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775795">(May 14 2021 at 14:30)</a>:</h4>
<p>we never unify two type variables if both are bound</p>



<a name="238775822"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775822" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775822">(May 14 2021 at 14:30)</a>:</h4>
<p>if both have known values, we just recursively walk those</p>



<a name="238775874"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775874" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775874">(May 14 2021 at 14:30)</a>:</h4>
<p>Oh</p>



<a name="238775893"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775893" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775893">(May 14 2021 at 14:30)</a>:</h4>
<p>It is <code>Self::Error</code></p>



<a name="238775906"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775906" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775906">(May 14 2021 at 14:30)</a>:</h4>
<p>so the path that <em>would</em> return an error instead calls <code>bug!</code></p>



<a name="238775924"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775924" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775924">(May 14 2021 at 14:31)</a>:</h4>
<p>right</p>



<a name="238775952"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238775952" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238775952">(May 14 2021 at 14:31)</a>:</h4>
<p>Okay okay</p>



<a name="238776328"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776328" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776328">(May 14 2021 at 14:33)</a>:</h4>
<p>So, essentially, rather than the value of <code>RegionVid</code> only being <code>RegionVidKey</code>, which is essentially just another <code>RegionVid</code>, it should also have the option value of the region</p>



<a name="238776357"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776357" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776357">(May 14 2021 at 14:33)</a>:</h4>
<p>I think we should do this in two steps</p>



<a name="238776366"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776366" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776366">(May 14 2021 at 14:33)</a>:</h4>
<p>step 1 is make its value <code>()</code></p>



<a name="238776376"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776376" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776376">(May 14 2021 at 14:33)</a>:</h4>
<p>and use the root var as the "canonical" one</p>



<a name="238776395"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776395" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776395">(May 14 2021 at 14:33)</a>:</h4>
<p>step 2 is make it <code>Option&lt;Region&gt;</code></p>



<a name="238776466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776466">(May 14 2021 at 14:34)</a>:</h4>
<p>grr, this will be a <em>bit</em> annoying, because of the <code>'tcx</code> thing</p>



<a name="238776500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776500">(May 14 2021 at 14:34)</a>:</h4>
<p>you know what we could do</p>



<a name="238776561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776561">(May 14 2021 at 14:34)</a>:</h4>
<p>Ugh yeah, <code>RegionVid</code> doesn't have a <code>'tcx</code></p>



<a name="238776598"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776598" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776598">(May 14 2021 at 14:34)</a>:</h4>
<p>ok, well, we could use <code>RegionKind</code>, or perhaps <code>ty::PlaceholderRegion</code></p>



<a name="238776620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776620">(May 14 2021 at 14:35)</a>:</h4>
<p>or we make the annoying wrapper type we have for <code>Ty</code> with a <code>PhantomData</code></p>



<a name="238776679"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776679" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776679">(May 14 2021 at 14:35)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238776598">said</a>:</p>
<blockquote>
<p>ok, well, we could use <code>RegionKind</code>, or perhaps <code>ty::PlaceholderRegion</code></p>
</blockquote>
<p>those types are kind of big, so I'm not thrilled about that</p>



<a name="238776693"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776693" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776693">(May 14 2021 at 14:35)</a>:</h4>
<p>I'd rather use an <code>Option&lt;&amp;...&gt;</code></p>



<a name="238776728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776728">(May 14 2021 at 14:35)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238776620">said</a>:</p>
<blockquote>
<p>or we make the annoying wrapper type we have for <code>Ty</code> with a <code>PhantomData</code></p>
</blockquote>
<p>I think we have to do this</p>



<a name="238776745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776745">(May 14 2021 at 14:35)</a>:</h4>
<p>someday I want to make ena 2.0</p>



<a name="238776750"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776750" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776750">(May 14 2021 at 14:35)</a>:</h4>
<p>well, probably 1.0 :)</p>



<a name="238776773"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776773" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776773">(May 14 2021 at 14:36)</a>:</h4>
<p>I don't love that library</p>



<a name="238776809"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776809" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776809">(May 14 2021 at 14:36)</a>:</h4>
<p>anyway</p>



<a name="238776859"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776859" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776859">(May 14 2021 at 14:36)</a>:</h4>
<p>What's wrong with ena</p>



<a name="238776880"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776880" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776880">(May 14 2021 at 14:36)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238776728">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238776620">said</a>:</p>
<blockquote>
<p>or we make the annoying wrapper type we have for <code>Ty</code> with a <code>PhantomData</code></p>
</blockquote>
<p>I think we have to do this</p>
</blockquote>
<p>Should be easy enough</p>



<a name="238776898"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776898" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776898">(May 14 2021 at 14:36)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238776859">said</a>:</p>
<blockquote>
<p>What's wrong with ena</p>
</blockquote>
<p>the API is just not as ergonomic as I would like</p>



<a name="238776907"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776907" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776907">(May 14 2021 at 14:37)</a>:</h4>
<p>it might be that I want to make a wrapper around ena</p>



<a name="238776927"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776927" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776927">(May 14 2021 at 14:37)</a>:</h4>
<p>I wrote a different version for lark I liked better</p>



<a name="238776958"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776958" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776958">(May 14 2021 at 14:37)</a>:</h4>
<p>that also had more "debuggability"-- e.g., it let you trace <em>why</em> something was unified</p>



<a name="238776979"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238776979" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238776979">(May 14 2021 at 14:37)</a>:</h4>
<p>i forget exactly what I did differently</p>



<a name="238777006"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238777006" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238777006">(May 14 2021 at 14:37)</a>:</h4>
<p>ena is reasonably fast though</p>



<a name="238777087"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238777087" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238777087">(May 14 2021 at 14:38)</a>:</h4>
<p>I'm sure it could be tuned but I did profile it and optimize it some</p>



<a name="238777145"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238777145" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238777145">(May 14 2021 at 14:38)</a>:</h4>
<p>side note that having a separate crate made that <em>so</em> much easier</p>



<a name="238777152"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238777152" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238777152">(May 14 2021 at 14:38)</a>:</h4>
<p>(score one for library-ification)</p>



<a name="238777278"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238777278" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238777278">(May 14 2021 at 14:39)</a>:</h4>
<p>Related: I find it odd that rustc uses ena <em>through</em> rustc_data_structures</p>



<a name="238777289"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238777289" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238777289">(May 14 2021 at 14:39)</a>:</h4>
<p>like, just import ena</p>



<a name="238777454"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238777454" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238777454">(May 14 2021 at 14:40)</a>:</h4>
<p>Okay so, I think I can do this</p>



<a name="238777467"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238777467" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238777467">(May 14 2021 at 14:40)</a>:</h4>
<p>One last question <span class="user-mention" data-user-id="116009">@nikomatsakis</span></p>



<a name="238777484"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238777484" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238777484">(May 14 2021 at 14:40)</a>:</h4>
<p>Why would you say a SCC search is <em>right</em></p>



<a name="238777530"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238777530" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238777530">(May 14 2021 at 14:41)</a>:</h4>
<p>Because we can have two sub relations without actual unification?</p>



<a name="238779107"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779107" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779107">(May 14 2021 at 14:51)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> yes</p>



<a name="238779119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779119">(May 14 2021 at 14:51)</a>:</h4>
<p>ideally I think we would <em>either</em> just record <code>'a: 'b</code> <em>or</em> unification</p>



<a name="238779127"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779127" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779127">(May 14 2021 at 14:52)</a>:</h4>
<p>not some weird hacky version of both</p>



<a name="238779196"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779196" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779196">(May 14 2021 at 14:52)</a>:</h4>
<p>i have been idly musing around writing an incremental SCC algorithm</p>



<a name="238779219"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779219" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779219">(May 14 2021 at 14:52)</a>:</h4>
<p>we could use <span class="user-mention" data-user-id="116609">@Frank McSherry</span>'s code for that :)</p>



<a name="238779236"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779236" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779236">(May 14 2021 at 14:52)</a>:</h4>
<p>that's what I think I really want here...</p>



<a name="238779281"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779281" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779281">(May 14 2021 at 14:52)</a>:</h4>
<p>...not in this PR !</p>



<a name="238779399"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779399" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779399">(May 14 2021 at 14:53)</a>:</h4>
<p>Sounds interesting :)</p>



<a name="238779493"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779493" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779493">(May 14 2021 at 14:54)</a>:</h4>
<p><a href="https://cs.stackexchange.com/questions/96424/incremental-strongly-connected-components">https://cs.stackexchange.com/questions/96424/incremental-strongly-connected-components</a></p>



<a name="238779520"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779520" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779520">(May 14 2021 at 14:54)</a>:</h4>
<blockquote>
<p>I'm not sure whether there is a good algorithm for directed graphs</p>
</blockquote>



<a name="238779529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779529">(May 14 2021 at 14:54)</a>:</h4>
<p>impossible :)</p>



<a name="238779578"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779578" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779578">(May 14 2021 at 14:54)</a>:</h4>
<p><a href="https://arxiv.org/abs/1105.2397">https://arxiv.org/abs/1105.2397</a></p>



<a name="238779761"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779761" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779761">(May 14 2021 at 14:56)</a>:</h4>
<p>hmm</p>



<a name="238779771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779771">(May 14 2021 at 14:56)</a>:</h4>
<p>this looks interesting</p>



<a name="238779772"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779772" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779772">(May 14 2021 at 14:56)</a>:</h4>
<p><a href="https://www.sciencedirect.com/science/article/pii/0304397586900988">https://www.sciencedirect.com/science/article/pii/0304397586900988</a></p>



<a name="238779779"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779779" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779779">(May 14 2021 at 14:56)</a>:</h4>
<blockquote>
<p>A data structure is presented for the problem of maintaining a digraph under an arbitrary sequence of two kinds of operations: an Add operation that inserts an arc in the digraph, and a Searchpath operation that checks the presence of a path between a pair of nodes. Our data structure supports both operations in O(n) amortized time and requires O(n2) space, where n is the number of nodes in the digraph.</p>
</blockquote>



<a name="238779868"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779868" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779868">(May 14 2021 at 14:56)</a>:</h4>
<p>I love writing code like that =)</p>



<a name="238779874"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779874" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779874">(May 14 2021 at 14:57)</a>:</h4>
<p>So would the idea be to replace ena with a more generalized directed graph approach</p>



<a name="238779899"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779899" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779899">(May 14 2021 at 14:57)</a>:</h4>
<p>for regions specifically, yes</p>



<a name="238779914"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779914" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779914">(May 14 2021 at 14:57)</a>:</h4>
<p>I'm not sure this is worth the energy to actually <em>do</em> but it may be</p>



<a name="238779935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779935">(May 14 2021 at 14:57)</a>:</h4>
<p>Could you do the same for types though?</p>



<a name="238779967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238779967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238779967">(May 14 2021 at 14:57)</a>:</h4>
<p>I'm just thinking about the cases in Chalk where we end up with a <code>?0 &lt;: ?1</code> and <code>?1 &lt;: ?0</code></p>



<a name="238780053"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238780053" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238780053">(May 14 2021 at 14:58)</a>:</h4>
<p>Not sure if that's 100% applicable though</p>



<a name="238780099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238780099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238780099">(May 14 2021 at 14:58)</a>:</h4>
<p>I don't know</p>



<a name="238780113"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238780113" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238780113">(May 14 2021 at 14:59)</a>:</h4>
<p>maybe</p>



<a name="238780307"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238780307" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238780307">(May 14 2021 at 15:00)</a>:</h4>
<p>So, not sure if this is because of the <em>other</em> changes in this branch (I don't think so), but changing <code>opportunistic_resolve_var</code> to <code>self.unification_table().find(rid)</code> makes a bunch of tests fail</p>



<a name="238780416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238780416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238780416">(May 14 2021 at 15:00)</a>:</h4>
<p>So there might be some subtlety I'm missing</p>



<a name="238781178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238781178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238781178">(May 14 2021 at 15:05)</a>:</h4>
<p>interesting</p>



<a name="238781192"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238781192" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238781192">(May 14 2021 at 15:05)</a>:</h4>
<p>I don't know why that would be</p>



<a name="238781256"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238781256" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238781256">(May 14 2021 at 15:06)</a>:</h4>
<p>okay okay, most of these might be the current branch's changes</p>



<a name="238781284"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238781284" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238781284">(May 14 2021 at 15:06)</a>:</h4>
<p>let me do this in a fresh branch</p>



<a name="238781294"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238781294" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238781294">(May 14 2021 at 15:06)</a>:</h4>
<p>yeah I'd probably <code>git stash</code> the current changes and do this work independently</p>



<a name="238781512"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238781512" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238781512">(May 14 2021 at 15:08)</a>:</h4>
<p>I'm going to have to hop off in a bit though</p>



<a name="238781571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238781571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238781571">(May 14 2021 at 15:08)</a>:</h4>
<p>Think I'm gonna spend 15 minutes</p>



<a name="238784194"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238784194" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238784194">(May 14 2021 at 15:26)</a>:</h4>
<p>Okay only one error:</p>
<div class="codehilite"><pre><span></span><code>---- [ui] ui/traits/inductive-overflow/lifetime.rs stdout ----
diff of stderr:

7       LL |     is_send::&lt;X&lt;C&lt;&#39;static&gt;&gt;&gt;();
8          |     ^^^^^^^^^^^^^^^^^^^^^^^^
9          |
-       note: required because of the requirements on the impl of `NotAuto` for `X&lt;C&lt;&#39;static&gt;&gt;`
+       note: required because of the requirements on the impl of `NotAuto` for `X&lt;C&lt;&#39;_&gt;&gt;`
11        --&gt; $DIR/lifetime.rs:19:12
12         |
13      LL | impl&lt;T: Y&gt; NotAuto for X&lt;T&gt; where T::P: NotAuto {}

14         |            ^^^^^^^     ^^^^
+          = note: 2 redundant requirements hidden
+          = note: required because of the requirements on the impl of `NotAuto` for `X&lt;C&lt;&#39;static&gt;&gt;`
15
16      error: aborting due to previous error
</code></pre></div>



<a name="238788664"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238788664" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238788664">(May 14 2021 at 15:59)</a>:</h4>
<p>interesting</p>



<a name="238788735"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238788735" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238788735">(May 14 2021 at 15:59)</a>:</h4>
<p>git you perhance git blame to see if there was anything interesting/</p>



<a name="238788856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238788856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238788856">(May 14 2021 at 16:00)</a>:</h4>
<p>that error looks pretty close</p>



<a name="238788862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238788862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238788862">(May 14 2021 at 16:00)</a>:</h4>
<p>No, I haven't looked into it at all. Had to get off and do actual work</p>



<a name="238788915"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238788915" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238788915">(May 14 2021 at 16:00)</a>:</h4>
<p>how dare you</p>



<a name="238788928"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238788928" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238788928">(May 14 2021 at 16:00)</a>:</h4>
<p>Yeah, the same information is there</p>



<a name="238788949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238788949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238788949">(May 14 2021 at 16:00)</a>:</h4>
<p>So I'm not super concerned</p>



<a name="238789069"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238789069" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238789069">(May 14 2021 at 16:01)</a>:</h4>
<p>Especially given that this seems to be happening on an overflow, so theoretically an edge case</p>



<a name="238856640"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238856640" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238856640">(May 15 2021 at 01:33)</a>:</h4>
<p>So...I think I've gotten the implementation done</p>



<a name="238856646"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238856646" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238856646">(May 15 2021 at 01:33)</a>:</h4>
<p>5 test failures</p>



<a name="238856723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238856723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238856723">(May 15 2021 at 01:34)</a>:</h4>
<p><code>ui/rfc1623.rs</code>:</p>



<a name="238856746"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238856746" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238856746">(May 15 2021 at 01:34)</a>:</h4>
<p>A bunch of</p>
<div class="codehilite"><pre><span></span><code>+       error[E0308]: mismatched types
+         --&gt; $DIR/rfc1623.rs:24:8
+          |
+       LL |     f: &amp;id,
+          |        ^^^ one type is more general than the other
+          |
+          = note: expected reference `&amp;&#39;a Foo&lt;&#39;b&gt;`
+                     found reference `&amp;&#39;a Foo&lt;&#39;b&gt;`
</code></pre></div>



<a name="238856749"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238856749" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238856749">(May 15 2021 at 01:34)</a>:</h4>
<p>That doesn't look right</p>



<a name="238856870"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238856870" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238856870">(May 15 2021 at 01:36)</a>:</h4>
<p>I mean, the good news is this isn't a <em>new</em> error:</p>



<a name="238856876"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238856876" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238856876">(May 15 2021 at 01:36)</a>:</h4>
<div class="codehilite"><pre><span></span><code>LL |     f: &amp;id,
   |        ^^^ implementation of `FnOnce` is not general enough
</code></pre></div>



<a name="238862475"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238862475" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238862475">(May 15 2021 at 03:06)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/issues/85313">#85313</a></p>



<a name="238862491"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238862491" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238862491">(May 15 2021 at 03:06)</a>:</h4>
<p>It's not perfect (some bad diagnostic changes, but I think no semantic changes)</p>



<a name="238862515"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238862515" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238862515">(May 15 2021 at 03:07)</a>:</h4>
<p><em>but</em>, the issue we were discussing in the projection normalization branch <em>is</em> fixed when rebased onto this</p>



<a name="238862518"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238862518" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238862518">(May 15 2021 at 03:07)</a>:</h4>
<p>So it does what we want it to :)</p>



<a name="238863613"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238863613" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238863613">(May 15 2021 at 03:22)</a>:</h4>
<p>Assuming my previous triage of the projection normalization tests holds, that leaves only two tests that are problematic</p>



<a name="238863637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238863637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238863637">(May 15 2021 at 03:23)</a>:</h4>
<p><code>ui/associated-types/hr-associated-type-bound-param-6.rs</code>, which now emits "<code>T: X&lt;'b, T&gt;</code> is not satisfied" instead of "<code>for&lt;'b&gt; T: X&lt;'b, T&gt;</code> is not satisfied"</p>



<a name="238863641"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238863641" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238863641">(May 15 2021 at 03:23)</a>:</h4>
<p>But otherwise fine, except for diagnostics</p>



<a name="238863647"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238863647" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238863647">(May 15 2021 at 03:23)</a>:</h4>
<p>And <code>ui/issues/issue-27901.rs</code></p>



<a name="238863651"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238863651" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238863651">(May 15 2021 at 03:23)</a>:</h4>
<p>Which now emits a "error[E0605]: non-primitive cast"</p>



<a name="238863709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238863709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238863709">(May 15 2021 at 03:24)</a>:</h4>
<p>(<code>for&lt;'s&gt; fn(&amp;'s str) -&gt; (&amp;'s str, &lt;&amp;'s str as Stream&gt;::Item) {f}</code> as <code>for&lt;'t&gt; fn(&amp;'t str) -&gt; (&amp;'t str, &lt;&amp;'t str as Stream&gt;::Item)</code>)</p>



<a name="238863741"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238863741" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238863741">(May 15 2021 at 03:24)</a>:</h4>
<p>ugh wait</p>



<a name="238863744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238863744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238863744">(May 15 2021 at 03:24)</a>:</h4>
<div class="codehilite"><pre><span></span><code>ui/issues/issue-38381.rs
</code></pre></div>



<a name="238863758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238863758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238863758">(May 15 2021 at 03:25)</a>:</h4>
<div class="codehilite"><pre><span></span><code>error: internal compiler error: broken MIR in DefId(0:6 ~ issue_38381[317d]::main) (CanonicalUserTypeAnnotation { user_ty: Canonical { max_universe: U0, variables: [], value: Ty(for&lt;&#39;r&gt; fn(&amp;&#39;r i32) -&gt; &lt;&amp;&#39;r i32 as std::ops::Deref&gt;::Target) }, span: /home/hueyj/temp/rust/rust/src/test/ui/issues/issue-38381.rs:6:13: 6:48 (#0), inferred_ty: for&lt;&#39;r&gt; fn(&amp;&#39;r i32) -&gt; &lt;&amp;&#39;r i32 as std::ops::Deref&gt;::Target }): bad user type (for&lt;&#39;r&gt; fn(&amp;&#39;r i32) -&gt; i32 = for&lt;&#39;r&gt; fn(&amp;&#39;r i32) -&gt; &lt;&amp;&#39;r i32 as std::ops::Deref&gt;::Target): NoSolution
</code></pre></div>



<a name="238863782"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238863782" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238863782">(May 15 2021 at 03:25)</a>:</h4>
<p>Anyways, those aren't for tonight</p>



<a name="238863855"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238863855" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238863855">(May 15 2021 at 03:26)</a>:</h4>
<p><code>ui/closures/issue-41366.rs</code> also ICEs</p>



<a name="238876793"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238876793" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238876793">(May 15 2021 at 07:25)</a>:</h4>
<p>So--- I wonder if the bad diagnostics and other problems arise from the (Some(_), Some(_)) case</p>



<a name="238876807"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238876807" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238876807">(May 15 2021 at 07:25)</a>:</h4>
<p>we could instead return Err if the two regions are not equal</p>



<a name="238876811"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238876811" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238876811">(May 15 2021 at 07:25)</a>:</h4>
<p>and just fail to unify in that case</p>



<a name="238876813"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238876813" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238876813">(May 15 2021 at 07:25)</a>:</h4>
<p>but i'm pondering what the implications could be</p>



<a name="238876825"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238876825" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238876825">(May 15 2021 at 07:25)</a>:</h4>
<p>I'd sort of rather have unification succeed but go to some value that indicates "many-values"</p>



<a name="238876890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238876890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238876890">(May 15 2021 at 07:26)</a>:</h4>
<p>I'm annoyed that an Option like this has size 16 and not 8:</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="k">enum</span> <span class="nc">TriValue</span><span class="o">&lt;'</span><span class="na">tcx</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">NoValue</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">OneValue</span><span class="p">(</span><span class="o">&amp;'</span><span class="na">tcx</span><span class="w"> </span><span class="n">Region</span><span class="p">),</span><span class="w"></span>
<span class="w">    </span><span class="n">MultipleValues</span><span class="p">,</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>



<a name="238876898"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238876898" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238876898">(May 15 2021 at 07:26)</a>:</h4>
<p>you'd think there'd be enough bits to make that work</p>



<a name="238876976"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238876976" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238876976">(May 15 2021 at 07:28)</a>:</h4>
<p>it's also annoying that the <code>unify_values</code> routine doesn't, I think, get access to a tcx</p>



<a name="238902335"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238902335" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238902335">(May 15 2021 at 14:37)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> <span aria-label="wave" class="emoji emoji-1f44b" role="img" title="wave">:wave:</span></p>



<a name="238902337"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238902337" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238902337">(May 15 2021 at 14:37)</a>:</h4>
<p>(don't know if you're around)</p>



<a name="238902576"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238902576" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238902576">(May 15 2021 at 14:41)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238876793">said</a>:</p>
<blockquote>
<p>So--- I wonder if the bad diagnostics and other problems arise from the (Some(_), Some(_)) case</p>
</blockquote>
<p>Possibly. I think the problem essentially boils down to the fact that we <em>were</em> using <code>ReVar</code> and now will opportunistically resolve to an actual region. And because sometimes the region is "arbitrary" i.e. when there are multiple different regions that unify, the opportunistic region isn't the same as the region we would necessarily get later when we resolve the constraints, and so errors occur at different places</p>



<a name="238902973"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238902973" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238902973">(May 15 2021 at 14:47)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238876811">said</a>:</p>
<blockquote>
<p>and just fail to unify in that case</p>
</blockquote>
<p>So, since <code>value1</code> is the "var" value, then failing to unify should leave that value intact, which ends up being equal to the current code</p>



<a name="238903074"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903074" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903074">(May 15 2021 at 14:48)</a>:</h4>
<p>I don't think it's equivalent</p>



<a name="238903078"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903078" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903078">(May 15 2021 at 14:48)</a>:</h4>
<p>I agree it may not be better</p>



<a name="238903086"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903086" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903086">(May 15 2021 at 14:48)</a>:</h4>
<p>I think the better thing would be to not fail but go to 'multiple'</p>



<a name="238903091"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903091" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903091">(May 15 2021 at 14:49)</a>:</h4>
<p>in which case, you would not canonicalize to the placeholder or what have you</p>



<a name="238903094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903094">(May 15 2021 at 14:49)</a>:</h4>
<p>but instead to the root variable</p>



<a name="238903107"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903107" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903107">(May 15 2021 at 14:49)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/238876825">said</a>:</p>
<blockquote>
<p>I'd sort of rather have unification succeed but go to some value that indicates "many-values"</p>
</blockquote>
<p>This is not a bad idea. The only "problem" I can think of, is that if we opportunistically resolve regions <em>before</em> we get multiple values, we still can pick an "arbitrary" region</p>



<a name="238903116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903116">(May 15 2021 at 14:49)</a>:</h4>
<p>mm, yes, I see</p>



<a name="238903125"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903125" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903125">(May 15 2021 at 14:49)</a>:</h4>
<p>I wonder</p>



<a name="238903171"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903171" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903171">(May 15 2021 at 14:50)</a>:</h4>
<p>(this btw is partly why I never wanted to have to do this reverse-mapping)</p>



<a name="238903180"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903180" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903180">(May 15 2021 at 14:50)</a>:</h4>
<p>...but given that we're trying to make it work....</p>



<a name="238903184"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903184" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903184">(May 15 2021 at 14:50)</a>:</h4>
<p>maybe what we need is not quite the same as the opportunistic resolve</p>



<a name="238903194"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903194" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903194">(May 15 2021 at 14:50)</a>:</h4>
<p>maybe we should do a different thing, specific to reverse mapping placeholders</p>



<a name="238903200"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903200" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903200">(May 15 2021 at 14:50)</a>:</h4>
<p>they <em>are</em> somewhat special</p>



<a name="238903214"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903214" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903214">(May 15 2021 at 14:50)</a>:</h4>
<p>well</p>



<a name="238903222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903222">(May 15 2021 at 14:51)</a>:</h4>
<p>I was going to say "we know that we have all the constraints relevant to them available"</p>



<a name="238903224"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903224" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903224">(May 15 2021 at 14:51)</a>:</h4>
<p>but that's not entirely true</p>



<a name="238903234"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903234" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903234">(May 15 2021 at 14:51)</a>:</h4>
<p>the obligations we pass back may produce more</p>



<a name="238903260"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903260" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903260">(May 15 2021 at 14:51)</a>:</h4>
<p>Well, I mean, let's remember: the reason we went down this path is as a hack</p>



<a name="238903266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903266">(May 15 2021 at 14:51)</a>:</h4>
<p>Since we create a variable and basically immediately unify it</p>



<a name="238903347"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903347" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903347">(May 15 2021 at 14:52)</a>:</h4>
<p>I mean, I think keeping <code>opportunistically_resolve_vars</code> is fine</p>



<a name="238903360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903360">(May 15 2021 at 14:53)</a>:</h4>
<p>well, the point is more this</p>



<a name="238903367"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903367" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903367">(May 15 2021 at 14:53)</a>:</h4>
<p>And then just add <code>opportunistically_resolve_values</code> for projection normalization (placeholder reverse mapping)</p>



<a name="238903371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903371">(May 15 2021 at 14:53)</a>:</h4>
<p>that the <em>other</em> places using <code>opportunistically_resolve_vars</code> may not want to change</p>



<a name="238903380"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903380" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903380">(May 15 2021 at 14:53)</a>:</h4>
<p>so maybe we kind of have a 3rd thing going on here</p>



<a name="238903431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903431">(May 15 2021 at 14:54)</a>:</h4>
<p>ngl this got me thinking about the projection normalization in Chalk...whoops</p>



<a name="238903561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903561">(May 15 2021 at 14:56)</a>:</h4>
<p>But yeah, I'm going to try to just revert <code>OpportunisticRegionResolver</code> to only resolve to root vars</p>



<a name="238903572"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903572" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903572">(May 15 2021 at 14:56)</a>:</h4>
<p>and separately have projection normalization be able to resolve values</p>



<a name="238903589"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903589" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903589">(May 15 2021 at 14:57)</a>:</h4>
<p>I think that's right</p>



<a name="238903595"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903595" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903595">(May 15 2021 at 14:57)</a>:</h4>
<p>minimize disruption</p>



<a name="238903607"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903607" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903607">(May 15 2021 at 14:57)</a>:</h4>
<p>that said, I don't think it'll cause <em>problems</em> to opportunistically resolve even if we haven't seen all the constraints yet, as long as we've seen "enough" constraints</p>



<a name="238903609"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903609" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903609">(May 15 2021 at 14:57)</a>:</h4>
<p>i.e., if we see an <code>=</code>, that should be ok</p>



<a name="238903671"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903671" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903671">(May 15 2021 at 14:58)</a>:</h4>
<p>I mean: as-is, the code is "fine" in that semantics haven't changed</p>



<a name="238903679"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903679" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903679">(May 15 2021 at 14:58)</a>:</h4>
<p>right</p>



<a name="238903681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903681">(May 15 2021 at 14:58)</a>:</h4>
<p>The only real problem is diagnostics</p>



<a name="238903684"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903684" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903684">(May 15 2021 at 14:58)</a>:</h4>
<p>right</p>



<a name="238903773"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/238903773" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#238903773">(May 15 2021 at 15:00)</a>:</h4>
<p>I think it's totally doable to be smarter with those and keep this. But for now, minimizing disruption is probably best</p>



<a name="239422865"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239422865" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239422865">(May 19 2021 at 13:23)</a>:</h4>
<p>Ok, so I dug into the <code>for&lt;'b&gt; T: X&lt;'b, T&gt;</code> -&gt; <code>T: X&lt;'!b, T&gt;</code> issue last night</p>



<a name="239423039"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423039" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423039">(May 19 2021 at 13:24)</a>:</h4>
<p>So, the important bit is what happens when <code>T: X&lt;'b, T&gt;</code> <em>can't</em> be resolved</p>



<a name="239423090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423090">(May 19 2021 at 13:24)</a>:</h4>
<p><a href="https://github.com/jackh726/rust/blob/6f20d3a3b2c50cf1780d9524e24658cddad5d596/compiler/rustc_trait_selection/src/traits/project.rs#L683">https://github.com/jackh726/rust/blob/6f20d3a3b2c50cf1780d9524e24658cddad5d596/compiler/rustc_trait_selection/src/traits/project.rs#L683</a></p>



<a name="239423130"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423130" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423130">(May 19 2021 at 13:25)</a>:</h4>
<p>huh</p>



<a name="239423145"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423145" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423145">(May 19 2021 at 13:25)</a>:</h4>
<p>why is that 404</p>



<a name="239423236"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423236" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423236">(May 19 2021 at 13:25)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/blob/3e827cc21e0734edd26170e8d1481f0d66a1426b/compiler/rustc_trait_selection/src/traits/project.rs#L546">https://github.com/rust-lang/rust/blob/3e827cc21e0734edd26170e8d1481f0d66a1426b/compiler/rustc_trait_selection/src/traits/project.rs#L546</a></p>



<a name="239423447"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423447" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423447">(May 19 2021 at 13:27)</a>:</h4>
<p>Basically, <code>project_type</code> may return a <code>ProjectionTyError::TraitSelectionError</code> if the trait ref can't be resolved. And for better diagnostics, we add an extra trait predicate</p>



<a name="239423451"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423451" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423451">(May 19 2021 at 13:27)</a>:</h4>
<p>reading</p>



<a name="239423507"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423507" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423507">(May 19 2021 at 13:27)</a>:</h4>
<p>The problem in this case, is that we <em>really</em> want that predicate to be <code>for&lt;'b&gt; T: X&lt;'b, T&gt;</code></p>



<a name="239423527"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423527" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423527">(May 19 2021 at 13:27)</a>:</h4>
<p>Not with the placeholder</p>



<a name="239423579"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423579" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423579">(May 19 2021 at 13:27)</a>:</h4>
<p>I'm looking</p>



<a name="239423589"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423589" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423589">(May 19 2021 at 13:27)</a>:</h4>
<p>I think the problem is really the diagnostics</p>



<a name="239423612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423612">(May 19 2021 at 13:28)</a>:</h4>
<p>I think that they should detect placeholders and print them differently</p>



<a name="239423679"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423679" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423679">(May 19 2021 at 13:28)</a>:</h4>
<p>I thought about that</p>



<a name="239423709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423709">(May 19 2021 at 13:28)</a>:</h4>
<p>Just making them treat placeholders with late bound vars as late bound themselves</p>



<a name="239423743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423743">(May 19 2021 at 13:28)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/239423447">said</a>:</p>
<blockquote>
<p>And for better diagnostics, we add an extra trait predicate</p>
</blockquote>
<p>why do you say this is for better diagnostics and not some other reason?</p>



<a name="239423819"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423819" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423819">(May 19 2021 at 13:29)</a>:</h4>
<p>I'm thinking about the way we print things</p>



<a name="239423898"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423898" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423898">(May 19 2021 at 13:29)</a>:</h4>
<p>Well, otherwise the projection just normalizes to an inference variable</p>



<a name="239423944"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423944" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423944">(May 19 2021 at 13:30)</a>:</h4>
<p>and we eventually get a "type annotations needed" error</p>



<a name="239423997"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239423997" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239423997">(May 19 2021 at 13:30)</a>:</h4>
<p>Which is <em>worse</em> that a "T doesn't implement <code>for&lt;'b&gt; X&lt;'b, T&gt;</code>"</p>



<a name="239424074"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424074" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424074">(May 19 2021 at 13:30)</a>:</h4>
<p>Or worse even than "T doesn't implement <code>X&lt;'b, T&gt;</code>" for that matter</p>



<a name="239424405"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424405" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424405">(May 19 2021 at 13:32)</a>:</h4>
<p>I am wondering about</p>



<a name="239424487"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424487" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424487">(May 19 2021 at 13:33)</a>:</h4>
<p>a print out like "T must implement <code>X&lt;'b, T&gt;</code> for any region <code>'b</code>"</p>



<a name="239424553"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424553" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424553">(May 19 2021 at 13:33)</a>:</h4>
<p>but I guess it would be better to print in that style uniformly or not at all</p>



<a name="239424580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424580">(May 19 2021 at 13:33)</a>:</h4>
<p>(I was imagining capturing in-scope placeholders and referencing them this way)</p>



<a name="239424661"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424661" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424661">(May 19 2021 at 13:34)</a>:</h4>
<p>I don't think we are very good at explaining higher-ranked things in our errors</p>



<a name="239424686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424686">(May 19 2021 at 13:34)</a>:</h4>
<p>I'm always thinking about how I would explain it to another human</p>



<a name="239424698"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424698" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424698">(May 19 2021 at 13:34)</a>:</h4>
<p>Yeah, then we end up with two different styles, depending on how we add the trait ref</p>



<a name="239424714"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424714" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424714">(May 19 2021 at 13:34)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/239424487">said</a>:</p>
<blockquote>
<p>a print out like "T must implement <code>X&lt;'b, T&gt;</code> for any region <code>'b</code>"</p>
</blockquote>
<p>I would use words like this</p>



<a name="239424760"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424760" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424760">(May 19 2021 at 13:34)</a>:</h4>
<p>(not that that's the worst thing ever)</p>



<a name="239424771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424771">(May 19 2021 at 13:34)</a>:</h4>
<p>but yes, I think that' s a separate discussion</p>



<a name="239424800"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424800" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424800">(May 19 2021 at 13:35)</a>:</h4>
<p>how hard would it be to detect placeholders and convert to bound form, do you think</p>



<a name="239424820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424820">(May 19 2021 at 13:35)</a>:</h4>
<p>it sort of loses information</p>



<a name="239424882"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424882" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424882">(May 19 2021 at 13:35)</a>:</h4>
<p>Where? In the pretty printing code, it's pretty easy to just modify the collect late bound regions to add placeholders</p>



<a name="239424917"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239424917" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239424917">(May 19 2021 at 13:35)</a>:</h4>
<p>That's the only place I would feel comfortable adding that though</p>



<a name="239425187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425187">(May 19 2021 at 13:37)</a>:</h4>
<p>I've also thought about two other potential solutions:</p>



<a name="239425304"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425304" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425304">(May 19 2021 at 13:38)</a>:</h4>
<p>1) "Eagerly" add the trait refs in projections as separate predicates <em>before</em> converting bound vars to placeholders</p>



<a name="239425341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425341">(May 19 2021 at 13:38)</a>:</h4>
<p>(and then don't add anything when we fail to project)</p>



<a name="239425485"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425485" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425485">(May 19 2021 at 13:39)</a>:</h4>
<p>2) Substitute placeholders for the bound vars from which they came in <code>fold_binders</code> in all (new?) obligations, being sure to append the bound vars to the obligations too</p>



<a name="239425614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425614">(May 19 2021 at 13:40)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/239424882">said</a>:</p>
<blockquote>
<p>Where? In the pretty printing code, it's pretty easy to just modify the collect late bound regions to add placeholders</p>
</blockquote>
<p>yes, in petty printing</p>



<a name="239425675"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425675" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425675">(May 19 2021 at 13:40)</a>:</h4>
<p>That's the most simple and straightforward</p>



<a name="239425686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425686">(May 19 2021 at 13:40)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/239425485">said</a>:</p>
<blockquote>
<p>2) Substitute placeholders for the bound vars from which they came in <code>fold_binders</code> in all (new?) obligations, being sure to append the bound vars to the obligations too</p>
</blockquote>
<p>I don't thnk we should do this</p>



<a name="239425702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425702">(May 19 2021 at 13:40)</a>:</h4>
<p>it's going in the wrong direction</p>



<a name="239425725"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425725" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425725">(May 19 2021 at 13:41)</a>:</h4>
<p>we want to be moving <em>towards</em> placeholders and away from "substituing back" towards bound forms</p>



<a name="239425767"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425767" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425767">(May 19 2021 at 13:41)</a>:</h4>
<p>Gotcha</p>



<a name="239425784"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425784" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425784">(May 19 2021 at 13:41)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/239425304">said</a>:</p>
<blockquote>
<p>1) "Eagerly" add the trait refs in projections as separate predicates <em>before</em> converting bound vars to placeholders</p>
</blockquote>
<p>this could be ok, not sure. I don't totally love it because it's the kind of "non-trivial desugaring" I would like to avoid on the path towards chalk</p>



<a name="239425810"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425810" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425810">(May 19 2021 at 13:41)</a>:</h4>
<p>I think overall I'd rather handle this in error reporting</p>



<a name="239425820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425820">(May 19 2021 at 13:41)</a>:</h4>
<p>placeholders will show up elsewhere, after all</p>



<a name="239425853"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425853" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425853">(May 19 2021 at 13:41)</a>:</h4>
<p>what do you mean by "non-trivial desugaring"</p>



<a name="239425927"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425927" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425927">(May 19 2021 at 13:42)</a>:</h4>
<p>well, maybe I take it back actually</p>



<a name="239425988"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239425988" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239425988">(May 19 2021 at 13:42)</a>:</h4>
<p>I was thinking that <code>T: Trait&lt;Item = X&gt;</code> desugaring to <code>T: Trait</code> and not just the projection was "non-trivial", but in a way it makes sense, Rust only supports the "compound form" in its surface syntax</p>



<a name="239426037"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239426037" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239426037">(May 19 2021 at 13:42)</a>:</h4>
<p>I do think though that relying on particular orderings in the predicates for diagnostics is a bit of a hack</p>



<a name="239426051"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239426051" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239426051">(May 19 2021 at 13:42)</a>:</h4>
<p>in my mind the order in which we process predicates is not defined</p>



<a name="239426097"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239426097" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239426097">(May 19 2021 at 13:43)</a>:</h4>
<p>Well, so</p>



<a name="239426141"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239426141" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239426141">(May 19 2021 at 13:43)</a>:</h4>
<p>That "predicate" <em>would</em> desugar into two predicates</p>



<a name="239426194"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239426194" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239426194">(May 19 2021 at 13:43)</a>:</h4>
<p>The problem is when we get something like <code>&lt;T as Trait&gt;::Item = X</code></p>



<a name="239426383"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239426383" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239426383">(May 19 2021 at 13:44)</a>:</h4>
<p>Okay, let me modify the pretty printing code to print placeholders as bound vars</p>



<a name="239426937"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239426937" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239426937">(May 19 2021 at 13:48)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/239426141">said</a>:</p>
<blockquote>
<p>That "predicate" <em>would</em> desugar into two predicates</p>
</blockquote>
<p>right I get it</p>



<a name="239426956"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239426956" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239426956">(May 19 2021 at 13:48)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/239426383">said</a>:</p>
<blockquote>
<p>Okay, let me modify the pretty printing code to print placeholders as bound vars</p>
</blockquote>
<p>anyway I still like this best :)</p>



<a name="239426989"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239426989" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239426989">(May 19 2021 at 13:48)</a>:</h4>
<p>I think so too</p>



<a name="239426994"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239426994" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239426994">(May 19 2021 at 13:48)</a>:</h4>
<p>Marginally</p>



<a name="239427062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239427062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239427062">(May 19 2021 at 13:49)</a>:</h4>
<p>the main reason I like is that I want to go more towards placeholders</p>



<a name="239427091"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239427091" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239427091">(May 19 2021 at 13:49)</a>:</h4>
<p>and so I think we are eventually going to see <em>all</em> our errors showing up as placeholder errorse</p>



<a name="239427104"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239427104" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239427104">(May 19 2021 at 13:49)</a>:</h4>
<p>and want to be able to detect and recover from those</p>



<a name="239427426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239427426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239427426">(May 19 2021 at 13:51)</a>:</h4>
<p>Reasonable</p>



<a name="239427546"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239427546" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239427546">(May 19 2021 at 13:52)</a>:</h4>
<p>All seems like a lot though</p>



<a name="239427744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239427744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239427744">(May 19 2021 at 13:53)</a>:</h4>
<p>So</p>



<a name="239427761"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239427761" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239427761">(May 19 2021 at 13:53)</a>:</h4>
<p>This does bring up one future issue</p>



<a name="239427818"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239427818" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239427818">(May 19 2021 at 13:53)</a>:</h4>
<p>If/when we just use the binders for pretty printing</p>



<a name="239427891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239427891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239427891">(May 19 2021 at 13:54)</a>:</h4>
<p>And we don't want to go through the type to find late bound regions</p>



<a name="239427921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239427921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239427921">(May 19 2021 at 13:54)</a>:</h4>
<p>I guess we'll have to still now</p>



<a name="239748543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239748543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239748543">(May 21 2021 at 13:18)</a>:</h4>
<p>Actually <span class="user-mention" data-user-id="116009">@nikomatsakis</span>, what I wrote literally just above ^ I think is the only thing to discuss</p>



<a name="239748612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239748612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239748612">(May 21 2021 at 13:19)</a>:</h4>
<p>i.e. how we want to handle pretty printing in the future when we want to use the bound vars instead of storing them in the bound regions/types themselves</p>



<a name="239748796"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239748796" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239748796">(May 21 2021 at 13:20)</a>:</h4>
<p>Also might make sense for you to read through the PR and see if there is anything that jumps out at you</p>



<a name="239748916"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239748916" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239748916">(May 21 2021 at 13:21)</a>:</h4>
<p>(We could also discuss the Chalk closure bug, but I feel like I should try to put together some notes on that; I don't want to keep putting it off though)</p>



<a name="239749368"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749368" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749368">(May 21 2021 at 13:24)</a>:</h4>
<p>ok, I'm back</p>



<a name="239749411"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749411" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749411">(May 21 2021 at 13:25)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/239427891">said</a>:</p>
<blockquote>
<p>And we don't want to go through the type to find late bound regions</p>
</blockquote>
<p>I don't understand this</p>



<a name="239749440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749440">(May 21 2021 at 13:25)</a>:</h4>
<p>we're talking just about during pretty printing, right?</p>



<a name="239749471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749471">(May 21 2021 at 13:25)</a>:</h4>
<p>Yes</p>



<a name="239749507"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749507" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749507">(May 21 2021 at 13:25)</a>:</h4>
<p>I see. I don't really see any problem with going through  the type during pretty printing</p>



<a name="239749508"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749508" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749508">(May 21 2021 at 13:25)</a>:</h4>
<p>So, the plan <em>was</em> to eventually remove the <code>var</code> on <code>BoundRegion</code></p>



<a name="239749513"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749513" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749513">(May 21 2021 at 13:25)</a>:</h4>
<p>err <code>kind</code></p>



<a name="239749594"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749594" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749594">(May 21 2021 at 13:26)</a>:</h4>
<p>Okay</p>



<a name="239749627"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749627" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749627">(May 21 2021 at 13:26)</a>:</h4>
<p>Easy enough then :)</p>



<a name="239749688"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749688" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749688">(May 21 2021 at 13:26)</a>:</h4>
<p>Maybe just quickly read through the PR then?</p>



<a name="239749739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749739">(May 21 2021 at 13:27)</a>:</h4>
<p>ok</p>



<a name="239749748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239749748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239749748">(May 21 2021 at 13:27)</a>:</h4>
<p>lemme look</p>



<a name="239753348"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239753348" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239753348">(May 21 2021 at 13:50)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> this PR is very confusing :P</p>



<a name="239753363"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239753363" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239753363">(May 21 2021 at 13:50)</a>:</h4>
<p>I think I should not have tried to read it commit by commit</p>



<a name="239753374"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239753374" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239753374">(May 21 2021 at 13:50)</a>:</h4>
<p>I feel like I keep reading the same code over and over</p>



<a name="239753383"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239753383" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239753383">(May 21 2021 at 13:50)</a>:</h4>
<p>before I relize you're moving it form one place to another</p>



<a name="239753426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239753426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239753426">(May 21 2021 at 13:50)</a>:</h4>
<p>No, don't read commit by commit</p>



<a name="239753555"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239753555" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239753555">(May 21 2021 at 13:51)</a>:</h4>
<p>I also messed up the rebase somehow at some point and had to redo the changes in "Normalize after liberating late bound regions" that you had done between a couple earlier commits</p>



<a name="239754503"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239754503" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239754503">(May 21 2021 at 13:56)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> is src/test/ui/associated-types/hr-associated-type-bound-2.rs no longer a blocker for merging the PR?</p>



<a name="239754597"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239754597" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239754597">(May 21 2021 at 13:57)</a>:</h4>
<p>which one is that...</p>



<a name="239754599"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239754599" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239754599">(May 21 2021 at 13:57)</a>:</h4>
<p>one sec</p>



<a name="239754612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239754612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239754612">(May 21 2021 at 13:57)</a>:</h4>
<p>impl X&lt;'_&gt; for u32 //~ overflow evaluating the requirement <code>for&lt;'b&gt; u32: X&lt;'b&gt;</code></p>



<a name="239754636"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239754636" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239754636">(May 21 2021 at 13:57)</a>:</h4>
<p>I think it is</p>



<a name="239754660"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239754660" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239754660">(May 21 2021 at 13:57)</a>:</h4>
<p>Shouldn't be overflowing there</p>



<a name="239754702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239754702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239754702">(May 21 2021 at 13:58)</a>:</h4>
<p>(I'm working on the overflow right now, actually)</p>



<a name="239754796"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239754796" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239754796">(May 21 2021 at 13:58)</a>:</h4>
<p>does it overflow in the wfcheck?</p>



<a name="239754842"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239754842" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239754842">(May 21 2021 at 13:58)</a>:</h4>
<p>I can see why it might overflow</p>



<a name="239755168"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239755168" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239755168">(May 21 2021 at 14:00)</a>:</h4>
<p>I don't know</p>



<a name="239755178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239755178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239755178">(May 21 2021 at 14:00)</a>:</h4>
<p>I started with the other one</p>



<a name="239755242"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239755242" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239755242">(May 21 2021 at 14:00)</a>:</h4>
<p>this feels related to the "implemented vs fully implemented" distinction that <span class="user-mention" data-user-id="131694">@scalexm</span> introduced for implied bounds</p>



<a name="239755327"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239755327" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239755327">(May 21 2021 at 14:01)</a>:</h4>
<p>still, pretty awesome!</p>



<a name="239755339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239755339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239755339">(May 21 2021 at 14:01)</a>:</h4>
<p>I want to see if I can make a test case that requires the inerence variable thing</p>



<a name="239755516"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/239755516" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#239755516">(May 21 2021 at 14:02)</a>:</h4>
<p>Okay :)</p>



<a name="240049813"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240049813" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240049813">(May 24 2021 at 13:20)</a>:</h4>
<p>Okay so, the test I'm looking at it <code>src/test/ui/recursion/issue-83150.rs</code></p>



<a name="240050082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240050082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240050082">(May 24 2021 at 13:22)</a>:</h4>
<p>ok, let me pull it up</p>



<a name="240050219"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240050219" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240050219">(May 24 2021 at 13:23)</a>:</h4>
<p>I'm also sync'ing with your branch</p>



<a name="240050221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240050221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240050221">(May 24 2021 at 13:23)</a>:</h4>
<p>Looks like it keeps going because obligations like this keep getting registered:</p>
<div class="codehilite"><pre><span></span><code>DEBUG rustc_trait_selection::traits::fulfill register_predicate_obligation, obligation=Obligation(predicate=Binder(TraitPredicate(&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt; as std::iter::Iterator&gt;), []), cause=ObligationCauseData { span: src/test/ui/recursion/issue-83150.rs:1:1: 1:1 (#0), body_id: HirId { owner: DefId(0:0 ~ issue_83150[317d]), local_id: 0 }, code: ImplDerivedObligation(DerivedObligationCause { parent_trait_ref: Binder(&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Ma
DEBUG rustc_trait_selection::traits::fulfill register_predicate_obligation, obligation=Obligation(predicate=Binder(TraitPredicate(&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt; as std::iter::Iterator&gt;), []), cause=ObligationCauseData { span: src/test/ui/recursion/issue-83150.rs:1:1: 1:1 (#0), body_id: HirId { owner: DefId(0:0 ~ issue_83150[317d]), local_id: 0 }, code: ImplDerivedObligation(DerivedObligationCause { parent_trait_ref: Binder(&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;, [func&lt;std::iter::Map&lt;&amp;ReErased mut std::ops::Range&lt;u8&gt;, [func&lt;std::ops::Range&lt;u8&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt;&gt;::{closure#0} closure_kind_ty=i16 closure_sig_as_fn_ptr_ty=extern &quot;rust-call&quot; fn((u8,)) -&gt; u8 upvar_tys=()]&gt; as std::iter::Iterator&gt;, []), parent_code: MiscObligation }) }, param_env=ParamEnv { caller_bounds: [], reveal: All }, depth=1)
</code></pre></div>



<a name="240050343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240050343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240050343">(May 24 2021 at 13:24)</a>:</h4>
<p>I'm thinking it's happening because of the obligation coming from projecting <code>Iterator::Item</code></p>



<a name="240050580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240050580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240050580">(May 24 2021 at 13:26)</a>:</h4>
<p>fun</p>



<a name="240050601"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240050601" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240050601">(May 24 2021 at 13:26)</a>:</h4>
<p>But what is weird to me</p>



<a name="240050642"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240050642" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240050642">(May 24 2021 at 13:27)</a>:</h4>
<p>Is <em>that</em> obligation keeps growing. So I'm unsure why we aren't catching that</p>



<a name="240055653"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240055653" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240055653">(May 24 2021 at 14:05)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> any thoughts here?</p>



<a name="240059408"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240059408" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240059408">(May 24 2021 at 14:33)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> I didn't get too far, but  have some more time blocked out today to work on chalk</p>



<a name="240059410"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240059410" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240059410">(May 24 2021 at 14:33)</a>:</h4>
<p>and I will investigate</p>



<a name="240059430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240059430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240059430">(May 24 2021 at 14:33)</a>:</h4>
<p>mostly I looked into the closure goal so far</p>



<a name="240119778"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240119778" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240119778">(May 24 2021 at 22:16)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I'm guessing you didn't get to this</p>



<a name="240322207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322207">(May 26 2021 at 13:16)</a>:</h4>
<p>I didn't get <em>too</em> far yet</p>



<a name="240322455"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322455" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322455">(May 26 2021 at 13:18)</a>:</h4>
<p>'m just grabbing the first 50K lines or so of output</p>



<a name="240322466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322466">(May 26 2021 at 13:18)</a>:</h4>
<p>So</p>



<a name="240322498"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322498" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322498">(May 26 2021 at 13:18)</a>:</h4>
<p>I realized that the test itself is pretty recent</p>



<a name="240322544"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322544" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322544">(May 26 2021 at 13:19)</a>:</h4>
<p>And I think maybe it <em>is</em> technically finite</p>



<a name="240322581"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322581" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322581">(May 26 2021 at 13:19)</a>:</h4>
<p>But just a big regression in solving the predicates</p>



<a name="240322650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322650">(May 26 2021 at 13:20)</a>:</h4>
<p>I'm looking closely at the test now</p>



<a name="240322743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322743">(May 26 2021 at 13:20)</a>:</h4>
<p>oh wait</p>



<a name="240322756"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322756" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322756">(May 26 2021 at 13:20)</a>:</h4>
<p>it's one of <em>these</em> kinds of tests</p>



<a name="240322799"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322799" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322799">(May 26 2021 at 13:20)</a>:</h4>
<p>ok, it always overflowed</p>



<a name="240322826"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322826" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322826">(May 26 2021 at 13:20)</a>:</h4>
<p>(as I would expect)</p>



<a name="240322849"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322849" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322849">(May 26 2021 at 13:21)</a>:</h4>
<p>Yes</p>



<a name="240322862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322862">(May 26 2021 at 13:21)</a>:</h4>
<p>so the question is mostly why it doesn't overflow <em>now</em></p>



<a name="240322880"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322880" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322880">(May 26 2021 at 13:21)</a>:</h4>
<p>Correct</p>



<a name="240322901"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322901" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322901">(May 26 2021 at 13:21)</a>:</h4>
<p>At least, now in a reasonable time</p>



<a name="240322923"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240322923" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240322923">(May 26 2021 at 13:21)</a>:</h4>
<p>I've killed it after a few minutes</p>



<a name="240323191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323191">(May 26 2021 at 13:23)</a>:</h4>
<p>particularly as there don't seeeeeeem to be many associated types under binders here...</p>



<a name="240323196"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323196" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323196">(May 26 2021 at 13:23)</a>:</h4>
<p>What's weird is the bit that is taking a long time is during codegen, I think</p>



<a name="240323285"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323285" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323285">(May 26 2021 at 13:23)</a>:</h4>
<p>At least, there aren't bound vars, just erased</p>



<a name="240323358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323358">(May 26 2021 at 13:24)</a>:</h4>
<p>And yeah, I don't see any bound vars</p>



<a name="240323429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323429">(May 26 2021 at 13:24)</a>:</h4>
<p>I think it might be due to replacing bound vars with placeholders and the inverse. And maybe just the folding?</p>



<a name="240323456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323456">(May 26 2021 at 13:24)</a>:</h4>
<p>Because that happens regardless of if there are actually bound vars</p>



<a name="240323586"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323586" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323586">(May 26 2021 at 13:25)</a>:</h4>
<p>I'm looking</p>



<a name="240323599"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323599" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323599">(May 26 2021 at 13:25)</a>:</h4>
<p>my kingdom for the ability to fold logs</p>



<a name="240323661"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323661" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323661">(May 26 2021 at 13:26)</a>:</h4>
<p>I'm sad nobody responed to my tweet with "here you go!"</p>



<a name="240323672"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323672" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323672">(May 26 2021 at 13:26)</a>:</h4>
<p>what is this world coming to</p>



<a name="240323836"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323836" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323836">(May 26 2021 at 13:27)</a>:</h4>
<p>So, I turned of the with verbose entry and exit in rustc_driver and the logs are so much nicer</p>



<a name="240323884"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240323884" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240323884">(May 26 2021 at 13:27)</a>:</h4>
<p>I don't even know what that means</p>



<a name="240324118"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324118" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324118">(May 26 2021 at 13:29)</a>:</h4>
<p>I think i know what I <em>really want</em></p>



<a name="240324121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324121">(May 26 2021 at 13:29)</a>:</h4>
<p>Verbose entry means when a new span is entered it reprints the current span</p>



<a name="240324145"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324145" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324145">(May 26 2021 at 13:29)</a>:</h4>
<p>And verbose exit means reprints when exiting</p>



<a name="240324235"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324235" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324235">(May 26 2021 at 13:29)</a>:</h4>
<p>I see</p>



<a name="240324794"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324794" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324794">(May 26 2021 at 13:33)</a>:</h4>
<p>do you know what's a good thing to log to get a good "overall view" of how far in compilation we are getting?</p>



<a name="240324902"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324902" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324902">(May 26 2021 at 13:34)</a>:</h4>
<p>something like the old -Ztime-passes</p>



<a name="240324911"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324911" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324911">(May 26 2021 at 13:34)</a>:</h4>
<p>I want to know e.g. "is typeck completing"?</p>



<a name="240324918"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324918" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324918">(May 26 2021 at 13:34)</a>:</h4>
<p>Uh, so, maybe just rustc_trait_selection</p>



<a name="240324952"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324952" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324952">(May 26 2021 at 13:35)</a>:</h4>
<p>answer: yes</p>



<a name="240324966"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324966" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324966">(May 26 2021 at 13:35)</a>:</h4>
<p>we are bulding MIR</p>



<a name="240324980"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324980" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324980">(May 26 2021 at 13:35)</a>:</h4>
<p>But rustc_typeck also is good</p>



<a name="240324986"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240324986" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240324986">(May 26 2021 at 13:35)</a>:</h4>
<p>I expect we are dying in code generation</p>



<a name="240325053"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240325053" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240325053">(May 26 2021 at 13:35)</a>:</h4>
<p>or bulding the set of monomorphized items</p>



<a name="240325255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240325255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240325255">(May 26 2021 at 13:36)</a>:</h4>
<p>Yes</p>



<a name="240325296"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240325296" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240325296">(May 26 2021 at 13:37)</a>:</h4>
<p>Only log rustc_ty_utils</p>



<a name="240325344"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240325344" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240325344">(May 26 2021 at 13:37)</a>:</h4>
<p>Repeated calls the codegen_fulfill_obligation</p>



<a name="240325445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240325445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240325445">(May 26 2021 at 13:38)</a>:</h4>
<p>cause us to fulfill increasing large predicates</p>



<a name="240326213"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326213" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326213">(May 26 2021 at 13:42)</a>:</h4>
<p>grep 'visit_item_use.*0:4\b'</p>



<a name="240326222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326222">(May 26 2021 at 13:42)</a>:</h4>
<p>logging that for later :)</p>



<a name="240326294"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326294" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326294">(May 26 2021 at 13:43)</a>:</h4>
<p>so I'm curious why we don't overflow in the collector</p>



<a name="240326299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326299">(May 26 2021 at 13:43)</a>:</h4>
<p>it has some logic for this</p>



<a name="240326316"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326316" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326316">(May 26 2021 at 13:43)</a>:</h4>
<p>as you said, it may actually <em>be</em> terminating</p>



<a name="240326329"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326329" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326329">(May 26 2021 at 13:43)</a>:</h4>
<p>Yes</p>



<a name="240326341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326341">(May 26 2021 at 13:43)</a>:</h4>
<p>it may be that it's just taking a lot longer to normalize at each step</p>



<a name="240326355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326355">(May 26 2021 at 13:43)</a>:</h4>
<p>hmm</p>



<a name="240326427"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326427" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326427">(May 26 2021 at 13:44)</a>:</h4>
<p>in chalk this would be cached better :/</p>



<a name="240326497"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326497" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326497">(May 26 2021 at 13:44)</a>:</h4>
<p>Hopefully, yeah</p>



<a name="240326558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326558">(May 26 2021 at 13:45)</a>:</h4>
<p>I'm surprised it's not :/</p>



<a name="240326682"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326682" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326682">(May 26 2021 at 13:45)</a>:</h4>
<p>changing the recursion limit to 22 makes the test error immediately</p>



<a name="240326688"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326688" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326688">(May 26 2021 at 13:45)</a>:</h4>
<p>athena. rustc +rust-2-stage1  src/test/ui/recursion/issue-83150.rs<br>
error[E0275]: overflow evaluating the requirement <code>Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut std::ops::Range&lt;u8&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;: Iterator</code><br>
  |<br>
  = help: consider adding a <code>#![recursion_limit="44"]</code> attribute to your crate (<code>issue_83150</code>)<br>
  = note: required because of the requirements on the impl of <code>Iterator</code> for <code>&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut Map&lt;&amp;mut std::ops::Range&lt;u8&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;, [closure@src/test/ui/recursion/issue-83150.rs:13:24: 13:33]&gt;</code></p>
<p>error: aborting due to previous error</p>



<a name="240326779"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326779" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326779">(May 26 2021 at 13:46)</a>:</h4>
<p>ok, let me think on this</p>



<a name="240326818"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326818" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326818">(May 26 2021 at 13:46)</a>:</h4>
<p>I wonder if we will have to improve the caching mechanism too :)</p>



<a name="240326875"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326875" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326875">(May 26 2021 at 13:46)</a>:</h4>
<p>I have to run for a bit, I have some urgent-ish stuff to take care of, but I think we know the problem</p>



<a name="240326949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326949">(May 26 2021 at 13:47)</a>:</h4>
<p>I didn't think to test that</p>



<a name="240326957"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326957" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326957">(May 26 2021 at 13:47)</a>:</h4>
<p>Okay</p>



<a name="240326972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240326972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240326972">(May 26 2021 at 13:47)</a>:</h4>
<p>I'll be here for a bit longer</p>



<a name="240327360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240327360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240327360">(May 26 2021 at 13:50)</a>:</h4>
<p>changing recursion limit to 5 reproduces the error too</p>



<a name="240327373"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240327373" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240327373">(May 26 2021 at 13:50)</a>:</h4>
<p>and gives much more reasonable logs:)</p>



<a name="240327405"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240327405" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240327405">(May 26 2021 at 13:50)</a>:</h4>
<p>athena. RUSTC_LOG=rustc_trait_selection rustc +rust-2-stage1  src/test/ui/recursion/issue-83150.rs -Zverbose &gt;&amp; killme<br>
athena. ls -l killme<br>
-rw-r--r-- 1 nmatsakis nmatsakis 10019498 May 26 09:50 killme</p>



<a name="240327463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240327463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240327463">(May 26 2021 at 13:51)</a>:</h4>
<p>for future ref :)</p>



<a name="240327473"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240327473" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240327473">(May 26 2021 at 13:51)</a>:</h4>
<p>I was going to dig into the cache keys</p>



<a name="240327490"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240327490" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240327490">(May 26 2021 at 13:51)</a>:</h4>
<p>I think I can guess the shape of the problem but it'd be good to confirm it</p>



<a name="240327809"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240327809" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240327809">(May 26 2021 at 13:53)</a>:</h4>
<p>good to know :)</p>



<a name="240466496"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240466496" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240466496">(May 27 2021 at 13:26)</a>:</h4>
<p>I'm looking again</p>



<a name="240466571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240466571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240466571">(May 27 2021 at 13:26)</a>:</h4>
<p>with my new script (thanks <span class="user-mention" data-user-id="116113">@lqd</span>) for VSCode friendly logs</p>



<a name="240466608"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240466608" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240466608">(May 27 2021 at 13:26)</a>:</h4>
<p>but really I should just be reading into how the cache works</p>



<a name="240467010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240467010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240467010">(May 27 2021 at 13:29)</a>:</h4>
<p>Nice</p>



<a name="240469988"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240469988" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240469988">(May 27 2021 at 13:50)</a>:</h4>
<p>ok so</p>



<a name="240470036"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240470036" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240470036">(May 27 2021 at 13:50)</a>:</h4>
<p>I'm kind of spinning my wheels a bit here</p>



<a name="240470053"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240470053" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240470053">(May 27 2021 at 13:50)</a>:</h4>
<p>one thing I think would be useful is to add back a -Z flag to restore the old behavior</p>



<a name="240470062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240470062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240470062">(May 27 2021 at 13:50)</a>:</h4>
<p>so we can compare the logs</p>



<a name="240470075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240470075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240470075">(May 27 2021 at 13:50)</a>:</h4>
<p>and perhaps profiles</p>



<a name="240470095"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240470095" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240470095">(May 27 2021 at 13:50)</a>:</h4>
<p>I was thinking of doing a perf run</p>



<a name="240470111"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240470111" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240470111">(May 27 2021 at 13:50)</a>:</h4>
<p>in some sense the code is "working as it should"</p>



<a name="240470131"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240470131" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240470131">(May 27 2021 at 13:50)</a>:</h4>
<p>so I'd like to see how it ran before to see what happened</p>



<a name="240470869"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240470869" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240470869">(May 27 2021 at 13:56)</a>:</h4>
<p>That's a good idea</p>



<a name="240602248"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240602248" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240602248">(May 28 2021 at 13:17)</a>:</h4>
<p>So, I tried adding the -Z option and haven't been able to make the code not take forever</p>



<a name="240602480"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240602480" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240602480">(May 28 2021 at 13:19)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> did you commit that option somewhere?</p>



<a name="240602534"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240602534" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240602534">(May 28 2021 at 13:20)</a>:</h4>
<p>I guess you mean that even when you try to disable normalization under binders, it <em>still</em> takes forever?</p>



<a name="240602540"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240602540" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240602540">(May 28 2021 at 13:20)</a>:</h4>
<p>that's...interesting</p>



<a name="240602590"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240602590" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240602590">(May 28 2021 at 13:20)</a>:</h4>
<p>No, I didn't. Because I couldn't figure it out</p>



<a name="240602662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240602662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240602662">(May 28 2021 at 13:21)</a>:</h4>
<p>My next step was going to just work forward. Checkout a clean master and try to incrementally add things</p>



<a name="240602771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240602771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240602771">(May 28 2021 at 13:22)</a>:</h4>
<p>right</p>



<a name="240602784"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240602784" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240602784">(May 28 2021 at 13:22)</a>:</h4>
<p>that sounds like a good next step</p>



<a name="240602939"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240602939" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240602939">(May 28 2021 at 13:23)</a>:</h4>
<p>I'm mostly just a bit confused</p>



<a name="240603010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240603010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240603010">(May 28 2021 at 13:24)</a>:</h4>
<p>I literally put like all the changes under a gate</p>



<a name="240603030"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240603030" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240603030">(May 28 2021 at 13:24)</a>:</h4>
<p>Except for the pretty changes, I guess</p>



<a name="240604462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240604462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240604462">(May 28 2021 at 13:35)</a>:</h4>
<p>That is pretty confusing</p>



<a name="240604987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240604987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240604987">(May 28 2021 at 13:39)</a>:</h4>
<p>Let me know how it goes <span class="user-mention" data-user-id="232957">@Jack Huey</span></p>



<a name="240605075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240605075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240605075">(May 28 2021 at 13:40)</a>:</h4>
<p>Going to do that now</p>



<a name="240605185"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240605185" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240605185">(May 28 2021 at 13:41)</a>:</h4>
<p>I'm just wondering if this test usually takes long anyways, and there's just a "big enough" increase in time with these changes</p>



<a name="240611196"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240611196" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240611196">(May 28 2021 at 14:25)</a>:</h4>
<p>plausible</p>



<a name="240612622"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240612622" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240612622">(May 28 2021 at 14:35)</a>:</h4>
<p>Okay so on a recent master</p>



<a name="240612652"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240612652" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240612652">(May 28 2021 at 14:35)</a>:</h4>
<p>And the test finishes in a reasonable amount of time</p>



<a name="240612664"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240612664" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240612664">(May 28 2021 at 14:35)</a>:</h4>
<p>But when I go to log what's happening</p>



<a name="240612673"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240612673" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240612673">(May 28 2021 at 14:35)</a>:</h4>
<p>bam, just takes forever</p>



<a name="240613362"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240613362" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240613362">(May 28 2021 at 14:41)</a>:</h4>
<p>heh</p>



<a name="240613374"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240613374" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240613374">(May 28 2021 at 14:41)</a>:</h4>
<p><em>that's</em> fun</p>



<a name="240613378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240613378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240613378">(May 28 2021 at 14:41)</a>:</h4>
<p>that said</p>



<a name="240613389"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240613389" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240613389">(May 28 2021 at 14:41)</a>:</h4>
<p>I guess I should just run on master</p>



<a name="240613407"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240613407" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240613407">(May 28 2021 at 14:41)</a>:</h4>
<p>e.g. you could put the low recursion limit (5)</p>



<a name="240613414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240613414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240613414">(May 28 2021 at 14:41)</a>:</h4>
<p>and log that</p>



<a name="240613435"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240613435" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240613435">(May 28 2021 at 14:41)</a>:</h4>
<p>I'm annoyed nightly builds don't have logs enabled</p>



<a name="240615581"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240615581" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240615581">(May 28 2021 at 14:55)</a>:</h4>
<p>I mean, I think the reason is that only logging <code>rustc_trait_selection</code> outputs a causal 1016260 lines</p>



<a name="240615651"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240615651" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240615651">(May 28 2021 at 14:56)</a>:</h4>
<p>definitely need to lower the recursion limit to look into this</p>



<a name="240637182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240637182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240637182">(May 28 2021 at 17:38)</a>:</h4>
<p>wait wait wait</p>



<a name="240637185"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240637185" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240637185">(May 28 2021 at 17:38)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/pull/83406/files">https://github.com/rust-lang/rust/pull/83406/files</a></p>



<a name="240637219"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240637219" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240637219">(May 28 2021 at 17:39)</a>:</h4>
<p>So it's probably still a bug in the pretty printing</p>



<a name="240637239"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240637239" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240637239">(May 28 2021 at 17:39)</a>:</h4>
<p>rhmmmmmmm</p>



<a name="240637265"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240637265" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240637265">(May 28 2021 at 17:39)</a>:</h4>
<p>Which makes sense why gating <em>everything else</em> still causes the perf regression</p>



<a name="240637274"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240637274" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240637274">(May 28 2021 at 17:39)</a>:</h4>
<p><span aria-label="face palm" class="emoji emoji-1f926" role="img" title="face palm">:face_palm:</span>‍♀️</p>



<a name="240637299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240637299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240637299">(May 28 2021 at 17:39)</a>:</h4>
<p>well, maybe</p>



<a name="240659469"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240659469" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240659469">(May 28 2021 at 20:54)</a>:</h4>
<p>So apparently reverting <a href="https://github.com/rust-lang/rust/pull/85499/commits/101fee02f75b24a02ea29236fc18d7f21cc2206d">https://github.com/rust-lang/rust/pull/85499/commits/101fee02f75b24a02ea29236fc18d7f21cc2206d</a> fixes the regression</p>



<a name="240675662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240675662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240675662">(May 29 2021 at 01:11)</a>:</h4>
<p>huh</p>



<a name="240675664"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240675664" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240675664">(May 29 2021 at 01:11)</a>:</h4>
<p>tht's a bit strange, isn't it</p>



<a name="240675859"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240675859" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240675859">(May 29 2021 at 01:16)</a>:</h4>
<p>Yeah</p>



<a name="240675862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240675862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240675862">(May 29 2021 at 01:16)</a>:</h4>
<p>Going to dig into it a bit tonight I think</p>



<a name="240675866"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240675866" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240675866">(May 29 2021 at 01:16)</a>:</h4>
<p>Tried some changes earlier but nothing helped</p>



<a name="240717175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240717175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240717175">(May 29 2021 at 19:25)</a>:</h4>
<p>So...if I had to guess, I bet that the reason we're taking more time is that before we were calling <code>replace_late_bound_regions</code> in the pretty code, but now call <code>fold_regions</code></p>



<a name="240717190"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240717190" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240717190">(May 29 2021 at 19:25)</a>:</h4>
<p>So, for the really large types, we end up folding over them rather than skipping them entirely</p>



<a name="240720017"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240720017" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240720017">(May 29 2021 at 20:40)</a>:</h4>
<p>Fixed it</p>



<a name="240786212"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786212" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786212">(May 31 2021 at 02:54)</a>:</h4>
<p>Okay so last issue, maybe:</p>



<a name="240786214"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786214" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786214">(May 31 2021 at 02:54)</a>:</h4>
<p><code>hr-associated-type-bound-2.rs</code></p>



<a name="240786229"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786229" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786229">(May 31 2021 at 02:55)</a>:</h4>
<p>So, the key problem is we have an impl</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="k">impl</span><span class="w"> </span><span class="n">X</span><span class="o">&lt;'</span><span class="nb">_</span><span class="o">&gt;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kt">u32</span><span class="w"></span>
<span class="k">where</span><span class="w"></span>
<span class="w">    </span><span class="k">for</span><span class="o">&lt;'</span><span class="na">b</span><span class="o">&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="bp">Self</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">X</span><span class="o">&lt;'</span><span class="na">b</span><span class="o">&gt;&gt;</span>::<span class="n">U</span>: <span class="nb">Clone</span><span class="p">,</span><span class="w"></span>
<span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="k">type</span> <span class="nc">U</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kt">str</span><span class="p">;</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>



<a name="240786234"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786234" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786234">(May 31 2021 at 02:55)</a>:</h4>
<p>We're trying to normalize the <code>ParamEnv</code></p>



<a name="240786240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786240">(May 31 2021 at 02:56)</a>:</h4>
<p>err maybe not</p>



<a name="240786294"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786294" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786294">(May 31 2021 at 02:56)</a>:</h4>
<p>But anyways, we have the <code>for&lt;'b&gt; &lt;&lt;u32 as X&lt;'b&gt;&gt;::U as std::clone::Clone&gt;</code> predicate</p>



<a name="240786302"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786302" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786302">(May 31 2021 at 02:57)</a>:</h4>
<p>So, starting here seems simple</p>



<a name="240786304"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786304" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786304">(May 31 2021 at 02:57)</a>:</h4>
<p>Convert that <code>'b</code> to a placeholder</p>



<a name="240786309"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786309" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786309">(May 31 2021 at 02:57)</a>:</h4>
<p>and try to project <code>&lt;u32 as X&lt;'b&gt;&gt;::U</code></p>



<a name="240786317"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786317" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786317">(May 31 2021 at 02:57)</a>:</h4>
<p>But this is a problem</p>



<a name="240786359"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786359" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786359">(May 31 2021 at 02:58)</a>:</h4>
<p>Because to successfully project that to <code>str</code>, we have to actually prove that bound</p>



<a name="240786363"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786363" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786363">(May 31 2021 at 02:58)</a>:</h4>
<p>So it's a cycle</p>



<a name="240786370"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786370" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786370">(May 31 2021 at 02:58)</a>:</h4>
<p>But to make it a bit more complicated</p>



<a name="240786375"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786375" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786375">(May 31 2021 at 02:59)</a>:</h4>
<p>We actually don't detect the cycle</p>



<a name="240786381"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786381" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786381">(May 31 2021 at 02:59)</a>:</h4>
<p>Because the <em>next</em> predicate has the bound var replaced with a <em>new</em> placeholder</p>



<a name="240786387"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786387" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786387">(May 31 2021 at 02:59)</a>:</h4>
<p>So the predicates aren't a "real" cycle</p>



<a name="240786391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786391">(May 31 2021 at 03:00)</a>:</h4>
<p>This could be solved with canonicalization</p>



<a name="240786459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786459">(May 31 2021 at 03:01)</a>:</h4>
<p>(interestingly, the normalization in <code>query/normalize</code> canonicalizes the projections <em>and</em> "eagerly" selects resulting obligations, whereas <code>AssocTypeNormalizer</code> accumulates obligations)</p>



<a name="240786509"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786509" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786509">(May 31 2021 at 03:02)</a>:</h4>
<p>But, that would really only change the error from "reached recursion limit" to a cycle error</p>



<a name="240786515"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786515" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786515">(May 31 2021 at 03:02)</a>:</h4>
<p>This is sort of a coinductive cycle</p>



<a name="240786519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786519">(May 31 2021 at 03:03)</a>:</h4>
<p>(sort of)</p>



<a name="240786529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786529">(May 31 2021 at 03:03)</a>:</h4>
<p>Well, I guess it is</p>



<a name="240786578"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786578" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786578">(May 31 2021 at 03:04)</a>:</h4>
<p>We can only try to prove that <code>&lt;u32 as X&lt;'b&gt;&gt;::U: Clone</code> if we know that <code>&lt;u32 as X&lt;'b&gt;&gt;::U: Clone</code> holds</p>



<a name="240786675"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786675" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786675">(May 31 2021 at 03:07)</a>:</h4>
<p>/me goes to look at how coinductive cycles in trait predicates are normally handled again</p>



<a name="240786814"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786814" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786814">(May 31 2021 at 03:10)</a>:</h4>
<p>Are...all cycles in rustc coinductive? No, right?</p>



<a name="240786886"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786886" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786886">(May 31 2021 at 03:12)</a>:</h4>
<p>I'm just thinking...if we <em>actually</em> generated the same <code>&lt;u32 as X&lt;'b&gt;&gt;</code> predicates, and that gets treated as coinductive, then we can confirm <code>&lt;u32 as X&lt;'b&gt;&gt;</code> and then project out <code>U</code></p>



<a name="240786953"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786953" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786953">(May 31 2021 at 03:14)</a>:</h4>
<p>So, I think I might just try to canonicalization approach</p>



<a name="240786962"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786962" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786962">(May 31 2021 at 03:15)</a>:</h4>
<p>But I can't just do what <code>QueryNormalizer</code> does, since we have to accumulate the obligations</p>



<a name="240786970"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240786970" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240786970">(May 31 2021 at 03:15)</a>:</h4>
<p>(I tried already)</p>



<a name="240787030"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240787030" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240787030">(May 31 2021 at 03:16)</a>:</h4>
<p>But I'm just trying to think, that means I also probably have the instantiate the generated subobligations too</p>



<a name="240788646"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240788646" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240788646">(May 31 2021 at 03:53)</a>:</h4>
<p>Ugh well, just the canonicalization approach is a bit more involved than I expected</p>



<a name="240788850"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240788850" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240788850">(May 31 2021 at 03:58)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I won't be around in the morning (not sure if you are, but if so, maybe take a look here and give some thoughts?)</p>



<a name="240843138"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240843138" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240843138">(May 31 2021 at 14:59)</a>:</h4>
<p>Oh, so, looking again, I think the canonicalization approach wouldn't actually work</p>



<a name="240843860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240843860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240843860">(May 31 2021 at 15:05)</a>:</h4>
<p>I guess the probably is <em>actually</em> that the selection/confirmation infrastructure is picked and chosen for the projection code</p>



<a name="240844230"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240844230" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240844230">(May 31 2021 at 15:09)</a>:</h4>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="w">    </span><span class="k">if</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">ProjectionTyCandidateSet</span>::<span class="n">Single</span><span class="p">(</span><span class="n">ProjectionTyCandidate</span>::<span class="n">Object</span><span class="p">(</span><span class="n">_</span><span class="p">))</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">candidates</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="c1">// Avoid normalization cycle from selection (see</span>
<span class="w">        </span><span class="c1">// `assemble_candidates_from_object_ty`).</span>
<span class="w">        </span><span class="c1">// FIXME(lazy_normalization): Lazy normalization should save us from</span>
<span class="w">        </span><span class="c1">// having to special case this.</span>
<span class="w">    </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="n">assemble_candidates_from_impls</span><span class="p">(</span><span class="n">selcx</span><span class="p">,</span><span class="w"> </span><span class="n">obligation</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="k">mut</span><span class="w"> </span><span class="n">candidates</span><span class="p">);</span><span class="w"></span>
<span class="w">    </span><span class="p">};</span><span class="w"></span>
</code></pre></div>



<a name="240844239"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240844239" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240844239">(May 31 2021 at 15:09)</a>:</h4>
<p>That comment seems relevant</p>



<a name="240845704"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240845704" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240845704">(May 31 2021 at 15:23)</a>:</h4>
<p>Right - this isn't coinductive</p>



<a name="240845819"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240845819" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240845819">(May 31 2021 at 15:24)</a>:</h4>
<p>Going back to the impl</p>



<a name="240845870"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240845870" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240845870">(May 31 2021 at 15:24)</a>:</h4>
<p>I think we should be able to <em>assume</em> that <code>for&lt;'b&gt; &lt;u32 as X&lt;'b&gt;&gt;::U: Clone</code> holds when normalizing <code>&lt;u32 as X&lt;'b&gt;&gt;::U</code>, but only when confirming the impl itself</p>



<a name="240846030"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240846030" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240846030">(May 31 2021 at 15:26)</a>:</h4>
<p>How does this work without bound vars</p>



<a name="240846137"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240846137" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240846137">(May 31 2021 at 15:27)</a>:</h4>
<p>"error[E0275]: overflow evaluating the requirement <code>&lt;u32 as X&gt;::U == _</code>" oh it doesn't</p>



<a name="240846244"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240846244" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240846244">(May 31 2021 at 15:28)</a>:</h4>
<p>okay so this is just an unfortunate case of "the more general case errored and now we have to deal with that</p>



<a name="240846263"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240846263" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240846263">(May 31 2021 at 15:28)</a>:</h4>
<p>Okay, so I'm gonna actually just say that can be done as a followup issue</p>



<a name="240959268"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/240959268" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#240959268">(Jun 01 2021 at 15:27)</a>:</h4>
<p>Ok so massive perf regression in deeply-nested-async</p>



<a name="241146312"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241146312" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241146312">(Jun 02 2021 at 13:14)</a>:</h4>
<p>there's a lot here</p>



<a name="241146319"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241146319" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241146319">(Jun 02 2021 at 13:14)</a>:</h4>
<p>I've not caught up :)</p>



<a name="241146335"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241146335" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241146335">(Jun 02 2021 at 13:14)</a>:</h4>
<p>want to give me the TL;DR?</p>



<a name="241146426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241146426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241146426">(Jun 02 2021 at 13:14)</a>:</h4>
<p>Give me a second</p>



<a name="241146691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241146691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241146691">(Jun 02 2021 at 13:17)</a>:</h4>
<p>So, I fixed the perf regression for 83150</p>



<a name="241146785"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241146785" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241146785">(Jun 02 2021 at 13:17)</a>:</h4>
<p>What did you have to change?</p>



<a name="241146807"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241146807" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241146807">(Jun 02 2021 at 13:18)</a>:</h4>
<p>It was something in the pertty printer?</p>



<a name="241146912"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241146912" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241146912">(Jun 02 2021 at 13:18)</a>:</h4>
<p>Yeah, basically just making sure we don't fold if there aren't bound vars or placeholders</p>



<a name="241147041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241147041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241147041">(Jun 02 2021 at 13:19)</a>:</h4>
<p>I also started looking into <code>hr-associated-type-bound-2.rs</code>, which changed from "the method <code>f</code> exists for type <code>u32</code>, but its trait bounds were not satisfied" to "overflow evaluating the requirement <code>for&lt;'b&gt; u32: X&lt;'b&gt;</code>". This is kind of unfortunate, but I realized that if you take the test, and remove that <code>'b</code> on <code>X</code>, then you also get an overflow error</p>



<a name="241147143"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241147143" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241147143">(Jun 02 2021 at 13:20)</a>:</h4>
<p>So, while it is unfortunate that it regresses, it's probably something that should be followed up on separately</p>



<a name="241147488"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241147488" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241147488">(Jun 02 2021 at 13:22)</a>:</h4>
<p>And then, I did a perf run, and there were some bad regressions. Namely, deeply-nested-async had an average 4000% regression</p>



<a name="241147608"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241147608" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241147608">(Jun 02 2021 at 13:23)</a>:</h4>
<p>I started digging into it a bit last night, and I think this comes from the fact that normalization both normalizes projections <em>and</em> opaque types (but only in <code>Reveal::All</code>)</p>



<a name="241147696"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241147696" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241147696">(Jun 02 2021 at 13:24)</a>:</h4>
<p>So, with that test, we have an <code>impl Future</code> that contains a bunch of nested <code>impl Future</code></p>



<a name="241147726"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241147726" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241147726">(Jun 02 2021 at 13:24)</a>:</h4>
<p>seems like a caching fail</p>



<a name="241147823"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241147823" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241147823">(Jun 02 2021 at 13:25)</a>:</h4>
<p>If we try to normalize it, then deeply nested there <em>is</em> a projection, but we can't actually get to it, because it's behind an opaque type</p>



<a name="241147914"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241147914" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241147914">(Jun 02 2021 at 13:25)</a>:</h4>
<p>is the perf hit limited to reveal::all?</p>



<a name="241147986"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241147986" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241147986">(Jun 02 2021 at 13:26)</a>:</h4>
<p>I <em>think</em> I can possible fix this by being smarter and only folding during <code>Reveal::UserFacing</code> if there are projections (no opaque tys)</p>



<a name="241147999"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241147999" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241147999">(Jun 02 2021 at 13:26)</a>:</h4>
<p>I don't know</p>



<a name="241148047"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148047" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148047">(Jun 02 2021 at 13:26)</a>:</h4>
<p>I actually expect that the perf hit comes during the <code>Reveal::UserFacing</code> part, since we fold more than we used to</p>



<a name="241148099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148099">(Jun 02 2021 at 13:27)</a>:</h4>
<p>Whereas for <code>Reveal::All</code>, I imagine we folded <em>eventually</em> with <code>ReErased</code>?</p>



<a name="241148317"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148317" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148317">(Jun 02 2021 at 13:28)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/241147726">said</a>:</p>
<blockquote>
<p>seems like a caching fail</p>
</blockquote>
<p>So, not quite. I go into a bit. Caching <em>is</em> failing, but only in the sense that we get an overflow error rather than recursive error. In reality, we don't currently assume an impl holds when we try to normalize associated types <em>within</em> an impl, recursively.</p>



<a name="241148650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148650">(Jun 02 2021 at 13:30)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/240786229">said</a>:</p>
<blockquote>
<p>So, the key problem is we have an impl</p>
<p><div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="k">impl</span><span class="w"> </span><span class="n">X</span><span class="o">&lt;'</span><span class="nb">_</span><span class="o">&gt;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="kt">u32</span><span class="w"></span>
<span class="k">where</span><span class="w"></span>
<span class="w">    </span><span class="k">for</span><span class="o">&lt;'</span><span class="na">b</span><span class="o">&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="bp">Self</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">X</span><span class="o">&lt;'</span><span class="na">b</span><span class="o">&gt;&gt;</span>::<span class="n">U</span>: <span class="nb">Clone</span><span class="p">,</span><span class="w"></span>
<span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="k">type</span> <span class="nc">U</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kt">str</span><span class="p">;</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div><br>
</p>
</blockquote>
<p>This is the problematic impl. The problem is that to prove <code>&lt;u32 as X&lt;'b&gt;&gt;::U: Clone</code>, we have to confirm the impl. To confirm the impl, we have to prove that <code>&lt;u32 as X&lt;'b&gt;::U: Clone</code> holds. But this isn't coinductive currently.</p>



<a name="241148702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148702">(Jun 02 2021 at 13:31)</a>:</h4>
<p>are you sure that's the name of the test?</p>



<a name="241148724"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148724" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148724">(Jun 02 2021 at 13:31)</a>:</h4>
<p>maybe my checkout is out of date</p>



<a name="241148874"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148874" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148874">(Jun 02 2021 at 13:32)</a>:</h4>
<p>Which one?</p>



<a name="241148895"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148895" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148895">(Jun 02 2021 at 13:32)</a>:</h4>
<p>I can't find any test named '<a href="http://deeply-nested-async.rs">deeply-nested-async.rs</a>'</p>



<a name="241148907"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148907" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148907">(Jun 02 2021 at 13:33)</a>:</h4>
<p>Not a test</p>



<a name="241148910"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148910" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148910">(Jun 02 2021 at 13:33)</a>:</h4>
<p>It's a perf benchmark</p>



<a name="241148921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148921">(Jun 02 2021 at 13:33)</a>:</h4>
<p><a href="https://github.com/rust-lang/rustc-perf/tree/master/collector/benchmarks/deeply-nested-async">https://github.com/rust-lang/rustc-perf/tree/master/collector/benchmarks/deeply-nested-async</a></p>



<a name="241148922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148922">(Jun 02 2021 at 13:33)</a>:</h4>
<p>but the one you just quoted -- is that <code>hr-associated-type-bound-1.rs</code></p>



<a name="241148971"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241148971" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241148971">(Jun 02 2021 at 13:33)</a>:</h4>
<p><code>src/test/ui/associated-types/hr-associated-type-bound-2.rs</code></p>



<a name="241149171"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241149171" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241149171">(Jun 02 2021 at 13:35)</a>:</h4>
<p>I see</p>



<a name="241149199"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241149199" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241149199">(Jun 02 2021 at 13:35)</a>:</h4>
<p>depending on the "implied bounds" setup</p>



<a name="241149205"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241149205" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241149205">(Jun 02 2021 at 13:35)</a>:</h4>
<p>that test <em>could</em> be provable</p>



<a name="241149258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241149258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241149258">(Jun 02 2021 at 13:35)</a>:</h4>
<p>Right, I think the test 100% can be provable</p>



<a name="241149371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241149371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241149371">(Jun 02 2021 at 13:36)</a>:</h4>
<p>I think we most certainly <em>should</em> be allowed to normalize <code>&lt;Self as X&lt;'b&gt;&gt;::U</code> when we're confirming <code>&lt;Self as X&lt;'b&gt;&gt;</code></p>



<a name="241149543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241149543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241149543">(Jun 02 2021 at 13:37)</a>:</h4>
<p>The point, though, is I'm not sure it makes sense to do that <em>here</em></p>



<a name="241149559"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241149559" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241149559">(Jun 02 2021 at 13:37)</a>:</h4>
<p>It's kind of orthogonal</p>



<a name="241149614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241149614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241149614">(Jun 02 2021 at 13:38)</a>:</h4>
<p>agreed</p>



<a name="241149635"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241149635" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241149635">(Jun 02 2021 at 13:38)</a>:</h4>
<p>I'm thinking about the deeply-nested-async test</p>



<a name="241149967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241149967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241149967">(Jun 02 2021 at 13:40)</a>:</h4>
<p>I'm going to do a build of your branch</p>



<a name="241150032"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241150032" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241150032">(Jun 02 2021 at 13:40)</a>:</h4>
<p>Ok :)</p>



<a name="241150794"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241150794" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241150794">(Jun 02 2021 at 13:46)</a>:</h4>
<p>Okay, so not folding in <code>Reveal::UserFacing</code> if there are only opaque types doesn't actually fix the perf regression</p>



<a name="241150905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241150905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241150905">(Jun 02 2021 at 13:47)</a>:</h4>
<p>I guess this is actually a little more difficult, because if there <em>are</em> projection types within the substs, then the flags for <code>HAS_TY_PROJECTION</code> will be set to true</p>



<a name="241151398"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241151398" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241151398">(Jun 02 2021 at 13:50)</a>:</h4>
<p>It's also completely possible this doesn't solve it anyways</p>



<a name="241153748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241153748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241153748">(Jun 02 2021 at 14:07)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> thoughts?</p>



<a name="241153775"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241153775" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241153775">(Jun 02 2021 at 14:07)</a>:</h4>
<p>not really</p>



<a name="241153825"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241153825" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241153825">(Jun 02 2021 at 14:08)</a>:</h4>
<p>I guess I have a build now</p>



<a name="241153926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241153926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241153926">(Jun 02 2021 at 14:08)</a>:</h4>
<p>I'm able to reproduce the problem</p>



<a name="241153935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241153935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241153935">(Jun 02 2021 at 14:08)</a>:</h4>
<p>so that's progress</p>



<a name="241153968"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241153968" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241153968">(Jun 02 2021 at 14:09)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span>, I'm curious, is there a good way to get a kind of "running dump" of what queries are completing and where time is being spent?</p>



<a name="241153973"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241153973" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241153973">(Jun 02 2021 at 14:09)</a>:</h4>
<p>I guess I can use perf for this</p>



<a name="241154261"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241154261" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241154261">(Jun 02 2021 at 14:11)</a>:</h4>
<p>oh I guess it finishes in "reasonable" time too</p>



<a name="241158148"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241158148" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241158148">(Jun 02 2021 at 14:39)</a>:</h4>
<p>What finishes?</p>



<a name="241158160"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241158160" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241158160">(Jun 02 2021 at 14:39)</a>:</h4>
<p>deeply-nested-async?</p>



<a name="241296096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241296096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241296096">(Jun 02 2021 at 18:03)</a>:</h4>
<p>yes</p>



<a name="241296268"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241296268" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241296268">(Jun 02 2021 at 18:04)</a>:</h4>
<p>Yeah, it does. But it's still a massive regression</p>



<a name="241389903"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241389903" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241389903">(Jun 03 2021 at 13:26)</a>:</h4>
<p>I guess we can dig a bit more in here?</p>



<a name="241390163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390163">(Jun 03 2021 at 13:28)</a>:</h4>
<p>Sure</p>



<a name="241390179"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390179" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390179">(Jun 03 2021 at 13:28)</a>:</h4>
<p>I was trying to look into what's different between my branch and master</p>



<a name="241390212"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390212" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390212">(Jun 03 2021 at 13:28)</a>:</h4>
<p>Definitely like a list of queries would be nice</p>



<a name="241390335"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390335" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390335">(Jun 03 2021 at 13:29)</a>:</h4>
<p>So, I ran a subset of the deeply-nested-async benchmark, debug logging rustc_trait_selection,rustc_typeck,rustc_middle; both through my branch and master</p>



<a name="241390356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390356">(Jun 03 2021 at 13:29)</a>:</h4>
<p>Surprisingly, my branch actually has <em>fewer</em> lines</p>



<a name="241390484"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390484" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390484">(Jun 03 2021 at 13:30)</a>:</h4>
<p>I ran it with <code>-Zself-profile</code></p>



<a name="241390495"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390495" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390495">(Jun 03 2021 at 13:30)</a>:</h4>
<p>but I haven't looked at the results</p>



<a name="241390499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390499">(Jun 03 2021 at 13:30)</a>:</h4>
<p>Now, there's been a bunch of changes to logging (what functions, what is logged, etc.), so it's not a 1:1 comparison</p>



<a name="241390505"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390505" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390505">(Jun 03 2021 at 13:30)</a>:</h4>
<p>I wanted to also check out the caching</p>



<a name="241390507"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390507" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390507">(Jun 03 2021 at 13:30)</a>:</h4>
<p>ooh</p>



<a name="241390615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390615">(Jun 03 2021 at 13:31)</a>:</h4>
<p>Are you able to upload that?</p>



<a name="241390624"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390624" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390624">(Jun 03 2021 at 13:31)</a>:</h4>
<p>I could take a look at it</p>



<a name="241390745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390745">(Jun 03 2021 at 13:32)</a>:</h4>
<p>side note, I wish that there was a debug-enabled version of nightly somewhere</p>



<a name="241390764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390764">(Jun 03 2021 at 13:32)</a>:</h4>
<p>So I didn't have to rebuild master</p>



<a name="241390798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390798">(Jun 03 2021 at 13:33)</a>:</h4>
<div class="codehilite"><pre><span></span><code>athena. summarize summarize unknown-crate-21132.mm_profdata
+-------------------------------------------------+-----------+-----------------+----------+------------+
| Item                                            | Self time | % of total time | Time     | Item count |
+-------------------------------------------------+-----------+-----------------+----------+------------+
| normalize_generic_arg_after_erasing_regions     | 39.98s    | 59.179          | 39.98s   | 420        |
+-------------------------------------------------+-----------+-----------------+----------+------------+
| codegen_module                                  | 9.04s     | 13.385          | 23.01s   | 13         |
+-------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_module_codegen_make_bitcode                | 4.65s     | 6.879           | 5.24s    | 13         |
+-------------------------------------------------+-----------+-----------------+----------+------------+
</code></pre></div>



<a name="241390969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390969">(Jun 03 2021 at 13:34)</a>:</h4>
<p>That matches perf: <a href="https://perf.rust-lang.org/detailed-query.html?commit=ce300333714ca415579d146d0042b1adfa9809ab&amp;base_commit=657bc01888e6297257655585f9c475a0801db6d2&amp;benchmark=deeply-nested-async-opt&amp;run_name=full">https://perf.rust-lang.org/detailed-query.html?commit=ce300333714ca415579d146d0042b1adfa9809ab&amp;base_commit=657bc01888e6297257655585f9c475a0801db6d2&amp;benchmark=deeply-nested-async-opt&amp;run_name=full</a></p>



<a name="241390974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241390974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241390974">(Jun 03 2021 at 13:34)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> <a href="https://smallcultfollowing.com/deeply-nested-async.mm_profdata">download the data here</a></p>



<a name="241391017"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241391017" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241391017">(Jun 03 2021 at 13:34)</a>:</h4>
<p>I'm rnning with nightly too</p>



<a name="241391075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241391075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241391075">(Jun 03 2021 at 13:35)</a>:</h4>
<div class="codehilite"><pre><span></span><code>athena. summarize summarize unknown-crate-13599.mm_profdata
+-------------------------------------------------+-----------+-----------------+----------+------------+
| Item                                            | Self time | % of total time | Time     | Item count |
+-------------------------------------------------+-----------+-----------------+----------+------------+
| codegen_module                                  | 1.01s     | 27.855          | 1.03s    | 13         |
+-------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_module_codegen_make_bitcode                | 756.12ms  | 20.795          | 837.11ms | 13         |
+-------------------------------------------------+-----------+-----------------+----------+------------+
</code></pre></div>



<a name="241391085"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241391085" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241391085">(Jun 03 2021 at 13:35)</a>:</h4>
<p>clear difference :)</p>



<a name="241391135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241391135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241391135">(Jun 03 2021 at 13:35)</a>:</h4>
<p>also interesting that the "self time" of <code>codegen_module</code> is <em>significantly</em> higher</p>



<a name="241391159"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241391159" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241391159">(Jun 03 2021 at 13:36)</a>:</h4>
<p>but obviously <code>normalize_generic_arg_after_erasing_regions</code> is the big one</p>



<a name="241391208"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241391208" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241391208">(Jun 03 2021 at 13:36)</a>:</h4>
<p>Right</p>



<a name="241391224"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241391224" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241391224">(Jun 03 2021 at 13:36)</a>:</h4>
<p>It's a bit interesting</p>



<a name="241391246"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241391246" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241391246">(Jun 03 2021 at 13:36)</a>:</h4>
<p>bound vars aren't replaced with <code>ReErased</code> there right?</p>



<a name="241391368"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241391368" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241391368">(Jun 03 2021 at 13:37)</a>:</h4>
<p>I'm poking at that</p>



<a name="241391579"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241391579" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241391579">(Jun 03 2021 at 13:39)</a>:</h4>
<p>Seems like no, since only <code>erase_regions</code> is called</p>



<a name="241391605"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241391605" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241391605">(Jun 03 2021 at 13:39)</a>:</h4>
<p>which only anonymizes bound vars, doesn't erase them</p>



<a name="241392179"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392179" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392179">(Jun 03 2021 at 13:43)</a>:</h4>
<p>When do we need to erase regions but keep bound vars</p>



<a name="241392477"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392477" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392477">(Jun 03 2021 at 13:46)</a>:</h4>
<p>I really, really wish we had a nightly build with logs enabled</p>



<a name="241392512"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392512" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392512">(Jun 03 2021 at 13:46)</a>:</h4>
<p>Yep, same</p>



<a name="241392517"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392517" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392517">(Jun 03 2021 at 13:46)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> did you ever add the <code>-Zdisable-this-pr</code> switch?</p>



<a name="241392540"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392540" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392540">(Jun 03 2021 at 13:46)</a>:</h4>
<p>I did, but then removed it</p>



<a name="241392553"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392553" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392553">(Jun 03 2021 at 13:46)</a>:</h4>
<p>:grr:</p>



<a name="241392557"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392557" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392557">(Jun 03 2021 at 13:46)</a>:</h4>
<p>ok :)</p>



<a name="241392561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392561">(Jun 03 2021 at 13:47)</a>:</h4>
<p>it'd be useful now</p>



<a name="241392597"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392597" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392597">(Jun 03 2021 at 13:47)</a>:</h4>
<p>I used to just always keep a checkout of rust-lang/master</p>



<a name="241392600"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392600" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392600">(Jun 03 2021 at 13:47)</a>:</h4>
<p>I should do that again</p>



<a name="241392614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392614">(Jun 03 2021 at 13:47)</a>:</h4>
<p>(so that I can build my own nightly with logs enabled)</p>



<a name="241392715"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241392715" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241392715">(Jun 03 2021 at 13:48)</a>:</h4>
<p>yeah :/</p>



<a name="241393119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241393119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241393119">(Jun 03 2021 at 13:51)</a>:</h4>
<div class="codehilite"><pre><span></span><code>    /// N.B., currently, higher-ranked type bounds inhibit
    /// normalization. Therefore, each time we erase them in
    /// codegen, we need to normalize the contents.
</code></pre></div>



<a name="241393127"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241393127" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241393127">(Jun 03 2021 at 13:51)</a>:</h4>
<p>On <code>normalize_erasing_late_bound_regions</code></p>



<a name="241394189"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394189" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394189">(Jun 03 2021 at 13:59)</a>:</h4>
<p>so</p>



<a name="241394226"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394226" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394226">(Jun 03 2021 at 13:59)</a>:</h4>
<p>(a) yes, that's true, I wonder if we could remove that logic with this PR, presumably we could</p>



<a name="241394273"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394273" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394273">(Jun 03 2021 at 14:00)</a>:</h4>
<p>that might make it a net perf win</p>



<a name="241394275"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394275" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394275">(Jun 03 2021 at 14:00)</a>:</h4>
<p>but also</p>



<a name="241394284"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394284" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394284">(Jun 03 2021 at 14:00)</a>:</h4>
<p>(b) the caching seems surprising here</p>



<a name="241394297"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394297" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394297">(Jun 03 2021 at 14:00)</a>:</h4>
<p>i'm adding logs on this function</p>



<a name="241394346"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394346" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394346">(Jun 03 2021 at 14:00)</a>:</h4>
<p>let me re-run wth <code>-Zverbose</code></p>



<a name="241394363"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394363" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394363">(Jun 03 2021 at 14:00)</a>:</h4>
<p>e.g.</p>



<a name="241394372"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394372" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394372">(Jun 03 2021 at 14:00)</a>:</h4>
<div class="codehilite"><pre><span></span><code>DEBUG rustc_traits::normalize_erasing_regions normalize_generic_arg_after_erasing_regions(goal=ParamEnvAnd {
    param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
    },
    value: &amp;mut impl std::future::Future,
})
</code></pre></div>



<a name="241394385"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394385" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394385">(Jun 03 2021 at 14:01)</a>:</h4>
<div class="codehilite"><pre><span></span><code>DEBUG rustc_traits::normalize_erasing_regions normalize_generic_arg_after_erasing_regions(goal=ParamEnvAnd {
    param_env: ParamEnv {
        caller_bounds: [],
        reveal: UserFacing,
    },
    value: &amp;mut impl std::future::Future,
})
</code></pre></div>



<a name="241394415"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394415" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394415">(Jun 03 2021 at 14:01)</a>:</h4>
<p>something is missing here</p>



<a name="241394430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394430">(Jun 03 2021 at 14:01)</a>:</h4>
<p>maybe -Zverbose will tell me the answer</p>



<a name="241394436"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394436" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394436">(Jun 03 2021 at 14:01)</a>:</h4>
<p>They might be different <code>impl Future</code>s</p>



<a name="241394543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394543">(Jun 03 2021 at 14:02)</a>:</h4>
<p>oh, duh</p>



<a name="241394549"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394549" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394549">(Jun 03 2021 at 14:02)</a>:</h4>
<p>of course :)</p>



<a name="241394648"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394648" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394648">(Jun 03 2021 at 14:03)</a>:</h4>
<p>Honestly, so far, I haven't seen anything <em>wrong</em> in terms of not caching when we should</p>



<a name="241394714"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394714" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394714">(Jun 03 2021 at 14:03)</a>:</h4>
<p>I think the problem really is just that we're now normalizing when we weren't before</p>



<a name="241394747"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394747" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394747">(Jun 03 2021 at 14:03)</a>:</h4>
<p>But it's a bit weird because I would just expect that we're normalizing <em>earlier</em> than we were before</p>



<a name="241394768"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394768" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394768">(Jun 03 2021 at 14:04)</a>:</h4>
<p>right, this is why I turned a bit to caching</p>



<a name="241394856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394856">(Jun 03 2021 at 14:04)</a>:</h4>
<p>because I was imagining maybe a better caching scheme might help there</p>



<a name="241394890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241394890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241394890">(Jun 03 2021 at 14:04)</a>:</h4>
<p>I was trying to look at where the types that we eventually normalize erasing regions come from</p>



<a name="241438859"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241438859" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241438859">(Jun 03 2021 at 19:15)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/241153968">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="125250">Wesley Wiser</span>, I'm curious, is there a good way to get a kind of "running dump" of what queries are completing and where time is being spent?</p>
</blockquote>
<p>Not really unfortunately although eddyb has asked for this before <a href="https://github.com/rust-lang/rust/issues/53630">https://github.com/rust-lang/rust/issues/53630</a></p>



<a name="241438953"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241438953" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241438953">(Jun 03 2021 at 19:16)</a>:</h4>
<p>Oops just realized how old that message was. Sorry for the late reply!</p>



<a name="241533811"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241533811" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241533811">(Jun 04 2021 at 13:23)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/241394890">said</a>:</p>
<blockquote>
<p>I was trying to look at where the types that we eventually normalize erasing regions come from</p>
</blockquote>
<p>did you ever make any progress here?</p>



<a name="241533841"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241533841" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241533841">(Jun 04 2021 at 13:23)</a>:</h4>
<p>No :/</p>



<a name="241533915"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241533915" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241533915">(Jun 04 2021 at 13:24)</a>:</h4>
<p>I'm super busy with work recently, so progress for me has been slow</p>



<a name="241534135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241534135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241534135">(Jun 04 2021 at 13:25)</a>:</h4>
<p>that seems fair :)</p>



<a name="241534147"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241534147" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241534147">(Jun 04 2021 at 13:26)</a>:</h4>
<p>let me pull up my vscode isntance</p>



<a name="241534202"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241534202" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241534202">(Jun 04 2021 at 13:26)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/241533915">said</a>:</p>
<blockquote>
<p>I'm super busy with work recently, so progress for me has been slow</p>
</blockquote>
<p>I feel the same way, which is ironic</p>



<a name="241534516"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241534516" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241534516">(Jun 04 2021 at 13:28)</a>:</h4>
<p>re. GAT stabilization: my general thoughts on timeline and such are: 1) Finish this PR 2) Make GATs not an incomplete feature 3) Make a blog post announcing that and calling for testing 4) Review tests and whether we need an additional RFC (I don't think so; I think everything is covered under the previous, except maybe no object safety, but idk if that warrants an RFC) 5) After 1-2 months from blog post, write a stabilization report and stabilize (I can't imagine there will be any showstopping bugs, given how long the feature has been in limbo and the number of tests that have been added during)</p>



<a name="241534863"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241534863" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241534863">(Jun 04 2021 at 13:31)</a>:</h4>
<p>Makes sense.</p>



<a name="241534884"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241534884" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241534884">(Jun 04 2021 at 13:31)</a>:</h4>
<p>I'm somewhat in the mood to produce some fresh RFCs just to help re-align the vision</p>



<a name="241534903"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241534903" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241534903">(Jun 04 2021 at 13:31)</a>:</h4>
<p>This applies perhaps more to <code>impl Trait</code> than anything else</p>



<a name="241534921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241534921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241534921">(Jun 04 2021 at 13:31)</a>:</h4>
<p>ok, I sort of remember what i was doing now</p>



<a name="241535015"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241535015" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241535015">(Jun 04 2021 at 13:32)</a>:</h4>
<p>Oh, I can definitely see it being relevant to <code>impl Trait</code>, given that <em>has</em> been split out into <code>min_type_alias_impl_trait</code>, for example</p>



<a name="241535101"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241535101" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241535101">(Jun 04 2021 at 13:33)</a>:</h4>
<p>right</p>



<a name="241535132"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241535132" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241535132">(Jun 04 2021 at 13:33)</a>:</h4>
<p>and also that the development before was so spread out between rfc after rfc</p>



<a name="241537402"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537402" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537402">(Jun 04 2021 at 13:50)</a>:</h4>
<p>so i"m looking more at the logs</p>



<a name="241537501"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537501" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537501">(Jun 04 2021 at 13:51)</a>:</h4>
<p>anything meaningful pop out to you?</p>



<a name="241537526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537526">(Jun 04 2021 at 13:51)</a>:</h4>
<p>the first thing I note is that master calls <code>normalize_generic_arg_after_erasing_regions</code> much more often</p>



<a name="241537542"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537542" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537542">(Jun 04 2021 at 13:52)</a>:</h4>
<p>but seems to spend much less time in it</p>



<a name="241537597"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537597" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537597">(Jun 04 2021 at 13:52)</a>:</h4>
<p>master:</p>



<a name="241537604"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537604" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537604">(Jun 04 2021 at 13:52)</a>:</h4>
<div class="codehilite"><pre><span></span><code>| normalize_generic_arg_after_erasing_regions     | 39.40ms   | 1.084           | 39.49ms  | 703        |
</code></pre></div>



<a name="241537617"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537617" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537617">(Jun 04 2021 at 13:52)</a>:</h4>
<p>branch:</p>



<a name="241537625"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537625" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537625">(Jun 04 2021 at 13:52)</a>:</h4>
<div class="codehilite"><pre><span></span><code>| normalize_generic_arg_after_erasing_regions     | 39.98s    | 59.179          | 39.98s   | 420        |
</code></pre></div>



<a name="241537637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537637">(Jun 04 2021 at 13:52)</a>:</h4>
<p>and that is indeed the main thing that I'm seeing in the logs</p>



<a name="241537643"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537643" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537643">(Jun 04 2021 at 13:52)</a>:</h4>
<p>I did some normalization</p>



<a name="241537681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537681">(Jun 04 2021 at 13:52)</a>:</h4>
<p>mostly the two branches are invoking the query on the same types, but then there will be big chunks of work that are only on master</p>



<a name="241537894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241537894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241537894">(Jun 04 2021 at 13:54)</a>:</h4>
<p>certainly <code>fold_binder</code> is doing a lot more work now</p>



<a name="241538014"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538014" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538014">(Jun 04 2021 at 13:54)</a>:</h4>
<p>(it makes you wonder, right... like if all we want are placeholders, we don't really need to do any folding :)</p>



<a name="241538039"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538039" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538039">(Jun 04 2021 at 13:55)</a>:</h4>
<p>let me do a perf record</p>



<a name="241538077"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538077" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538077">(Jun 04 2021 at 13:55)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/241538014">said</a>:</p>
<blockquote>
<p>(it makes you wonder, right... like if all we want are placeholders, we don't really need to do any folding :)</p>
</blockquote>
<p>can you clarify</p>



<a name="241538180"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538180" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538180">(Jun 04 2021 at 13:56)</a>:</h4>
<p>well</p>



<a name="241538272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538272">(Jun 04 2021 at 13:56)</a>:</h4>
<p>right now we eagerly fold and replace bound variables with placeholders</p>



<a name="241538298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538298">(Jun 04 2021 at 13:56)</a>:</h4>
<p>but we could instead just remember the universe that this particular binder mapped to</p>



<a name="241538317"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538317" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538317">(Jun 04 2021 at 13:56)</a>:</h4>
<p>and do the mapping between bound variable and placeholder lazilly, as we pull things out</p>



<a name="241538347"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538347" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538347">(Jun 04 2021 at 13:56)</a>:</h4>
<p>I'm not, however, sure that's a significant part of the time regardless</p>



<a name="241538365"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538365" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538365">(Jun 04 2021 at 13:57)</a>:</h4>
<p>I've always wanted to take a lazier approach though</p>



<a name="241538380"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538380" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538380">(Jun 04 2021 at 13:57)</a>:</h4>
<p>we do it in the NLL code</p>



<a name="241538459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538459">(Jun 04 2021 at 13:57)</a>:</h4>
<p>Interesting. That actually might be really relevant for these deeply nested types</p>



<a name="241538522"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538522" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538522">(Jun 04 2021 at 13:58)</a>:</h4>
<p>where recursing through them probably takes a significant amount of time</p>



<a name="241538536"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538536" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538536">(Jun 04 2021 at 13:58)</a>:</h4>
<p>right</p>



<a name="241538709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538709">(Jun 04 2021 at 13:59)</a>:</h4>
<p>I do hate perf</p>



<a name="241538715"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538715" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538715">(Jun 04 2021 at 13:59)</a>:</h4>
<p>I mean I love perf</p>



<a name="241538728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241538728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241538728">(Jun 04 2021 at 13:59)</a>:</h4>
<p>it's just so painful to extract information from it sometimes</p>



<a name="241539097"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539097" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539097">(Jun 04 2021 at 14:01)</a>:</h4>
<p>one thing I observe:</p>



<a name="241539108"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539108" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539108">(Jun 04 2021 at 14:01)</a>:</h4>
<p>I really wish we had like a flamegraph approach</p>



<a name="241539180"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539180" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539180">(Jun 04 2021 at 14:02)</a>:</h4>
<p>all the "missing" queries (queries that appear only in master) are <code>Reveal: All</code></p>



<a name="241539224"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539224" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539224">(Jun 04 2021 at 14:02)</a>:</h4>
<p>isn't there a way to convert <code>-Zself-profile</code> into flamegraph? cc <span class="user-mention" data-user-id="125250">@Wesley Wiser</span></p>



<a name="241539240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539240">(Jun 04 2021 at 14:02)</a>:</h4>
<p>or maybe <span class="user-mention" data-user-id="124287">@mw</span></p>



<a name="241539247"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539247" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539247">(Jun 04 2021 at 14:02)</a>:</h4>
<p>Yeah</p>



<a name="241539266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539266">(Jun 04 2021 at 14:02)</a>:</h4>
<p>Oh, <span class="user-mention" data-user-id="124287">@mw</span> is not subscribed here--- well he is now!</p>



<a name="241539299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539299">(Jun 04 2021 at 14:02)</a>:</h4>
<p><a href="https://github.com/rust-lang/measureme/tree/master/flamegraph">https://github.com/rust-lang/measureme/tree/master/flamegraph</a></p>



<a name="241539358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539358">(Jun 04 2021 at 14:03)</a>:</h4>
<p>trying that out now</p>



<a name="241539400"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539400" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539400">(Jun 04 2021 at 14:03)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> is there a way to filter down the events to those with a given query</p>



<a name="241539425"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539425" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539425">(Jun 04 2021 at 14:03)</a>:</h4>
<p>I think more helpful would be able to dig into things that aren't explicitly labeled, like replacing the bound vars with placeholders</p>



<a name="241539427"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539427" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539427">(Jun 04 2021 at 14:03)</a>:</h4>
<p>I miss <code>perf-focus</code></p>



<a name="241539501"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539501" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539501">(Jun 04 2021 at 14:04)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/241539425">said</a>:</p>
<blockquote>
<p>I think more helpful would be able to dig into things that aren't explicitly labeled, like replacing the bound vars with placeholders</p>
</blockquote>
<p>we can label them, presumably</p>



<a name="241539516"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539516" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539516">(Jun 04 2021 at 14:04)</a>:</h4>
<p>You mean queries with a specific query key? Or something else?</p>



<a name="241539553"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539553" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539553">(Jun 04 2021 at 14:04)</a>:</h4>
<p>I only want to see stuff that involves a given query</p>



<a name="241539574"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539574" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539574">(Jun 04 2021 at 14:04)</a>:</h4>
<p>I would <em>also</em> like to filter by details about the key</p>



<a name="241539719"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539719" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539719">(Jun 04 2021 at 14:05)</a>:</h4>
<p>still, this flamegraph is pretty interesting</p>



<a name="241539753"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539753" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539753">(Jun 04 2021 at 14:05)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> if the same query is invoked many times in the flamegraph, would each have their own distinct box?</p>



<a name="241539831"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539831" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539831">(Jun 04 2021 at 14:06)</a>:</h4>
<p>No, we don't have any features like that.</p>



<a name="241539844"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539844" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539844">(Jun 04 2021 at 14:06)</a>:</h4>
<p>flamegraph: <a href="http://smallcultfollowing.com/rustc.svg">http://smallcultfollowing.com/rustc.svg</a></p>



<a name="241539902"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539902" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539902">(Jun 04 2021 at 14:06)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> can I somehow dump out individual samples in more detail?</p>



<a name="241539922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539922">(Jun 04 2021 at 14:06)</a>:</h4>
<p>Not usually, you can think of flamegraphs as "GROUP BY stack" so multiple instances of the same query on the same stack level will be collapsed together.</p>



<a name="241539955"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539955" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539955">(Jun 04 2021 at 14:07)</a>:</h4>
<p>oh, that's less useful</p>



<a name="241539994"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241539994" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241539994">(Jun 04 2021 at 14:07)</a>:</h4>
<p>I want to know if there are a few expensive instances</p>



<a name="241540001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540001">(Jun 04 2021 at 14:07)</a>:</h4>
<p>or many cheap ones</p>



<a name="241540019"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540019" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540019">(Jun 04 2021 at 14:07)</a>:</h4>
<p>I guess I have to clone the repo and start changing things</p>



<a name="241540178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540178">(Jun 04 2021 at 14:08)</a>:</h4>
<p>also it's so cool that we have this tooling :)</p>



<a name="241540192"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540192" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540192">(Jun 04 2021 at 14:08)</a>:</h4>
<p>sorry if I seem like I'm carping</p>



<a name="241540193"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540193" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540193">(Jun 04 2021 at 14:08)</a>:</h4>
<p>The fastest thing to do might be to change <a href="https://github.com/rust-lang/measureme/tree/master/mmview">https://github.com/rust-lang/measureme/tree/master/mmview</a> to output JSON</p>



<a name="241540244"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540244" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540244">(Jun 04 2021 at 14:08)</a>:</h4>
<p>what does mmview output now?</p>



<a name="241540272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540272">(Jun 04 2021 at 14:09)</a>:</h4>
<p>and then you can import that into whatever analysis tool you want that accepts JSON or use jq or something.</p>



<a name="241540301"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540301" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540301">(Jun 04 2021 at 14:09)</a>:</h4>
<p>it kind of ... looks like json?</p>



<a name="241540329"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540329" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540329">(Jun 04 2021 at 14:09)</a>:</h4>
<p>I guess not</p>



<a name="241540336"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540336" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540336">(Jun 04 2021 at 14:09)</a>:</h4>
<p>Malformed json basically :)</p>



<a name="241540348"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540348" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540348">(Jun 04 2021 at 14:09)</a>:</h4>
<div class="codehilite"><pre><span></span><code>    println!(
        r#&quot;{{
    kind: {},
    label: {},
    additional_data: [{}],
    timestamp: {},
    thread_id: {},
}}&quot;#,
        event.event_kind, event.label, additional_data, timestamp, event.thread_id
    );
</code></pre></div>



<a name="241540352"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540352" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540352">(Jun 04 2021 at 14:09)</a>:</h4>
<p>we should make a meta tool for all these tools</p>



<a name="241540368"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540368" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540368">(Jun 04 2021 at 14:09)</a>:</h4>
<p>so you can do <code>measureme flamegraph</code> or whatever</p>



<a name="241540456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241540456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241540456">(Jun 04 2021 at 14:10)</a>:</h4>
<p>anway that looks useful, I can probably get what I want from that + ripgrep</p>



<a name="241541694"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241541694" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241541694">(Jun 04 2021 at 14:17)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> so, I should try to make replacing bound vars &lt;=&gt; placeholders lazy</p>



<a name="241541855"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241541855" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241541855">(Jun 04 2021 at 14:18)</a>:</h4>
<p>Any other thoughts on things I can try this weekend?</p>



<a name="241542577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241542577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241542577">(Jun 04 2021 at 14:23)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> still digging some</p>



<a name="241542590"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241542590" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241542590">(Jun 04 2021 at 14:23)</a>:</h4>
<p>I've got some interesting data</p>



<a name="241542600"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241542600" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241542600">(Jun 04 2021 at 14:23)</a>:</h4>
<p>in short, there are a few <em>really expensive</em> queries</p>



<a name="241542740"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241542740" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241542740">(Jun 04 2021 at 14:24)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/241540352">said</a>:</p>
<blockquote>
<p>we should make a meta tool for all these tools</p>
</blockquote>
<p><a href="https://internals.rust-lang.org/t/compiler-profiling-survey/10969/18">I think so too</a></p>



<a name="241542829"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241542829" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241542829">(Jun 04 2021 at 14:25)</a>:</h4>
<p>Thank you <span class="user-mention" data-user-id="116009">@nikomatsakis</span>. If you come up with a few things for me to do, I can work more this weekend</p>



<a name="241542901"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241542901" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241542901">(Jun 04 2021 at 14:25)</a>:</h4>
<p>I'm going to post a google drive spreadsheet</p>



<a name="241542920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241542920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241542920">(Jun 04 2021 at 14:25)</a>:</h4>
<p>I did some ripgrep magic and threw some stuff into an excel spreadsheet</p>



<a name="241542972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241542972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241542972">(Jun 04 2021 at 14:26)</a>:</h4>
<div class="codehilite"><pre><span></span><code>47391225    49118601    1727376 4.32%   30.83%
35380955    37122967    1742012 4.36%   35.19%
49118638    50862857    1744219 4.36%   39.55%
16909761    18666769    1757008 4.39%   43.95%
7970773 9754038 1783265 4.46%   48.41%
1533853 3768334 2234481 5.59%   54.00%
43889263    47391206    3501943 8.76%   62.75%
20445464    24000777    3555313 8.89%   71.65%
13346026    16909497    3563471 8.91%   80.56%
24000839    27572418    3571579 8.93%   89.49%
3768736 7970587 4201851 10.51%  100.00%
</code></pre></div>



<a name="241542995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241542995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241542995">(Jun 04 2021 at 14:26)</a>:</h4>
<p>that's the tail end of it</p>



<a name="241543032"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543032" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543032">(Jun 04 2021 at 14:26)</a>:</h4>
<p>neat</p>



<a name="241543033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543033">(Jun 04 2021 at 14:26)</a>:</h4>
<p>ugh so annoying</p>



<a name="241543075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543075">(Jun 04 2021 at 14:26)</a>:</h4>
<p>anyway the first percentage -- e.g., 10.51% -- is "percentage of total time spent in this query from this particular instance"</p>



<a name="241543085"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543085" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543085">(Jun 04 2021 at 14:26)</a>:</h4>
<p>and the second percentage is the running total</p>



<a name="241543093"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543093" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543093">(Jun 04 2021 at 14:26)</a>:</h4>
<p>s/neat/annoying</p>



<a name="241543124"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543124" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543124">(Jun 04 2021 at 14:27)</a>:</h4>
<p>so you can see that the trailing few are accounting for the vast majority of time</p>



<a name="241543152"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543152" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543152">(Jun 04 2021 at 14:27)</a>:</h4>
<p>now the question is "what are those queries', but you can bet they are some very big folders</p>



<a name="241543159"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543159" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543159">(Jun 04 2021 at 14:27)</a>:</h4>
<p>if I had to guess</p>



<a name="241543166"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543166" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543166">(Jun 04 2021 at 14:27)</a>:</h4>
<p>well it seems obvious doesn't it</p>



<a name="241543178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543178">(Jun 04 2021 at 14:27)</a>:</h4>
<p>I think the way we set this up, it will do O(n^2) work</p>



<a name="241543204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543204">(Jun 04 2021 at 14:27)</a>:</h4>
<p>for things with nested folders</p>



<a name="241543254"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543254" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543254">(Jun 04 2021 at 14:28)</a>:</h4>
<p>so yes, being lazy would be a big win</p>



<a name="241543269"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543269" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543269">(Jun 04 2021 at 14:28)</a>:</h4>
<p>we could probably handle that locally to this folder</p>



<a name="241543282"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543282" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543282">(Jun 04 2021 at 14:28)</a>:</h4>
<p>I can point you at how the NLL code does it</p>



<a name="241543390"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543390" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543390">(Jun 04 2021 at 14:29)</a>:</h4>
<p>I think I've seen the NLL code</p>



<a name="241543441"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543441" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543441">(Jun 04 2021 at 14:29)</a>:</h4>
<p>How O(n^2)?</p>



<a name="241543651"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543651" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543651">(Jun 04 2021 at 14:30)</a>:</h4>
<p><a href="https://drive.google.com/file/d/1V1q252eyLo3uY2A7OEqGEDvsqSyylpTW/view?usp=sharing">https://drive.google.com/file/d/1V1q252eyLo3uY2A7OEqGEDvsqSyylpTW/view?usp=sharing</a></p>



<a name="241543679"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543679" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543679">(Jun 04 2021 at 14:31)</a>:</h4>
<p>in case you want to see the data</p>



<a name="241543789"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543789" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543789">(Jun 04 2021 at 14:31)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/241543441">said</a>:</p>
<blockquote>
<p>How O(n^2)?</p>
</blockquote>
<p>well, if we have nested fors</p>



<a name="241543811"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543811" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543811">(Jun 04 2021 at 14:31)</a>:</h4>
<p>let's say <code>for&lt;'a&gt; ... for&lt;'b&gt; ... for&lt;'c&gt; ...</code></p>



<a name="241543833"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543833" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543833">(Jun 04 2021 at 14:31)</a>:</h4>
<p>we are going to first replace <code>'a</code> with placeholders</p>



<a name="241543855"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543855" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543855">(Jun 04 2021 at 14:31)</a>:</h4>
<p>yielding <code>... for&lt;'b&gt; ... for&lt;'c&gt; ...</code></p>



<a name="241543900"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543900" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543900">(Jun 04 2021 at 14:32)</a>:</h4>
<p>then we will replace <code>'b</code></p>



<a name="241543919"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543919" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543919">(Jun 04 2021 at 14:32)</a>:</h4>
<p>and then <code>'c</code></p>



<a name="241543928"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543928" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543928">(Jun 04 2021 at 14:32)</a>:</h4>
<p>ah yeah</p>



<a name="241543936"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543936" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543936">(Jun 04 2021 at 14:32)</a>:</h4>
<p>for each of those replacements, we traverse the type (O^n)..</p>



<a name="241543944"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543944" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543944">(Jun 04 2021 at 14:32)</a>:</h4>
<p>...ok, you see it :)</p>



<a name="241543975"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543975" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543975">(Jun 04 2021 at 14:32)</a>:</h4>
<p>so what I would do is instead to grow a vector with the universes</p>



<a name="241543995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241543995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241543995">(Jun 04 2021 at 14:32)</a>:</h4>
<p>I guess technically O(n^k) where k is the level of nesting</p>



<a name="241544005"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544005" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544005">(Jun 04 2021 at 14:32)</a>:</h4>
<p>and then at the last second, we walk the type we plan to actually normalize</p>



<a name="241544026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544026">(Jun 04 2021 at 14:32)</a>:</h4>
<p>which is even worse</p>



<a name="241544038"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544038" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544038">(Jun 04 2021 at 14:32)</a>:</h4>
<p>yeah, true, good point</p>



<a name="241544056"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544056" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544056">(Jun 04 2021 at 14:32)</a>:</h4>
<p>n^2 for 2 binders :)</p>



<a name="241544095"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544095" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544095">(Jun 04 2021 at 14:33)</a>:</h4>
<p>Niko's school of O thought: you have O(n), and then you have "too slow"</p>



<a name="241544099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544099">(Jun 04 2021 at 14:33)</a>:</h4>
<p>anyway</p>



<a name="241544161"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544161" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544161">(Jun 04 2021 at 14:33)</a>:</h4>
<p>Well, now that I see that, I realize how obvious it is</p>



<a name="241544195"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544195" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544195">(Jun 04 2021 at 14:33)</a>:</h4>
<p>then at the last point we can replace each bound thing by indexing from the end of the list of universes to find the right universe</p>



<a name="241544219"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544219" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544219">(Jun 04 2021 at 14:33)</a>:</h4>
<p>it's still going to be kind of painful</p>



<a name="241544272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544272">(Jun 04 2021 at 14:34)</a>:</h4>
<p>as we have to recursively substitute back</p>



<a name="241544286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544286">(Jun 04 2021 at 14:34)</a>:</h4>
<p>and that too is an expensive folding</p>



<a name="241544347"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544347" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544347">(Jun 04 2021 at 14:34)</a>:</h4>
<p>which is why I was wondering whether we could represent bound types and placeholders literally the same, but that... well, that'd be harder</p>



<a name="241544367"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544367" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544367">(Jun 04 2021 at 14:34)</a>:</h4>
<p>we used to do it in chalk, too, is was just kind of a pain</p>



<a name="241544428"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544428" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544428">(Jun 04 2021 at 14:35)</a>:</h4>
<p>let's fix the first half and then worry about the second, I guess, it seems like something that could be optimized</p>



<a name="241544454"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544454" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544454">(Jun 04 2021 at 14:35)</a>:</h4>
<p>e.g. maybe just checking for "does this contain placeholders" would work 99% of the time</p>



<a name="241544463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544463">(Jun 04 2021 at 14:35)</a>:</h4>
<p>substituting back shouldn't be as bad</p>



<a name="241544518"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544518" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544518">(Jun 04 2021 at 14:35)</a>:</h4>
<p>Yeah, because unless there were placeholders to start, we don't have to work</p>



<a name="241544642"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544642" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544642">(Jun 04 2021 at 14:36)</a>:</h4>
<p>But yeah, I can do this</p>



<a name="241544662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241544662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241544662">(Jun 04 2021 at 14:36)</a>:</h4>
<p>Maybe this evening, maybe not until tomorrow</p>



<a name="241545010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241545010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241545010">(Jun 04 2021 at 14:38)</a>:</h4>
<p>great!</p>



<a name="241545017"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241545017" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241545017">(Jun 04 2021 at 14:38)</a>:</h4>
<p>productive morning time :)</p>



<a name="241545033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241545033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241545033">(Jun 04 2021 at 14:39)</a>:</h4>
<p>and thanks to <span class="user-mention" data-user-id="124287">@mw</span> and <span class="user-mention" data-user-id="125250">@Wesley Wiser</span> for <code>-Zself-profile</code> :)</p>



<a name="241545729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241545729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241545729">(Jun 04 2021 at 14:44)</a>:</h4>
<p>Please do file issues as you come across things you wish the tools did. Most of the things in this thread are probably fairly easy to do, we just need to know what people want <span aria-label="smile" class="emoji emoji-1f642" role="img" title="smile">:smile:</span></p>



<a name="241546044"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241546044" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241546044">(Jun 04 2021 at 14:46)</a>:</h4>
<p>Thank you <span class="user-mention" data-user-id="116009">@nikomatsakis</span>. You're always so helpful</p>



<a name="241557345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241557345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241557345">(Jun 04 2021 at 16:06)</a>:</h4>
<p>So <span class="user-mention" data-user-id="116009">@nikomatsakis</span> was thinking a bit more about this. I don't actually think we recurse all the way down the types in <code>fold_binder</code> (in this case), because I don't think any of the deep inner types reference the outermost bound vars</p>



<a name="241557407"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241557407" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241557407">(Jun 04 2021 at 16:06)</a>:</h4>
<p>i.e. it's only a couple levels deep</p>



<a name="241558312"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558312" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558312">(Jun 04 2021 at 16:13)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> hmmm---could be--- it'd be good to identify which are the values that are taking so long</p>



<a name="241558345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558345">(Jun 04 2021 at 16:13)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> is there an easy way to have measureme dump out the times from each query as they happen, so I could correlate the logs?</p>



<a name="241558352"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558352" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558352">(Jun 04 2021 at 16:13)</a>:</h4>
<p>Yeah. I mean, I think being more lazy will be better in general, but I'm less hopeful now that I thought about it</p>



<a name="241558370"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558370" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558370">(Jun 04 2021 at 16:13)</a>:</h4>
<p>we can dig a bit deeper</p>



<a name="241558390"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558390" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558390">(Jun 04 2021 at 16:13)</a>:</h4>
<p>there's something else I was wondering about</p>



<a name="241558459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558459">(Jun 04 2021 at 16:14)</a>:</h4>
<p>master:</p>



<a name="241558462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558462">(Jun 04 2021 at 16:14)</a>:</h4>
<p>| codegen_module                                  | 1.01s     | 27.855          | 1.03s    | 13         |</p>



<a name="241558495"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558495" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558495">(Jun 04 2021 at 16:14)</a>:</h4>
<p>branch:</p>



<a name="241558498"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558498" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558498">(Jun 04 2021 at 16:14)</a>:</h4>
<p>| codegen_module                                  | 9.04s     | 13.385          | 23.01s   | 13         |</p>



<a name="241558503"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558503" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558503">(Jun 04 2021 at 16:14)</a>:</h4>
<p>9x!</p>



<a name="241558513"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558513" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558513">(Jun 04 2021 at 16:14)</a>:</h4>
<p>what's going on <em>there</em>?</p>



<a name="241558531"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558531" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558531">(Jun 04 2021 at 16:14)</a>:</h4>
<p>could we be normalizing though</p>



<a name="241558572"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558572" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558572">(Jun 04 2021 at 16:15)</a>:</h4>
<p>I guess I should pull out perf focus</p>



<a name="241558732"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241558732" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241558732">(Jun 04 2021 at 16:16)</a>:</h4>
<p>yeah, possibly that includes some erase-then-normalize calls</p>



<a name="241559066"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241559066" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241559066">(Jun 04 2021 at 16:18)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> There isn't but if you are recording query keys, that might be the easiest way to match up the output manually assuming your logs also have that data in them.</p>



<a name="241559263"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241559263" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241559263">(Jun 04 2021 at 16:20)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> how do you record query keys?</p>



<a name="241559316"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241559316" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241559316">(Jun 04 2021 at 16:20)</a>:</h4>
<p><code>rustc -Zself-profile -Zself-profile-events=default,args</code></p>



<a name="241559603"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241559603" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241559603">(Jun 04 2021 at 16:22)</a>:</h4>
<p>processing the perf data is taking <em>forever</em></p>



<a name="241559622"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241559622" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241559622">(Jun 04 2021 at 16:22)</a>:</h4>
<p>oh I think I know why</p>



<a name="241559688"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241559688" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241559688">(Jun 04 2021 at 16:23)</a>:</h4>
<p>well, let's try a lower <code>-F</code></p>



<a name="241560363"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241560363" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241560363">(Jun 04 2021 at 16:28)</a>:</h4>
<p>When profiling rustc, I usually have to use <code>perf report --no-inline</code> to generate report in a reasonable amount of time.</p>



<a name="241645341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/241645341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#241645341">(Jun 05 2021 at 16:50)</a>:</h4>
<p>So, it's a bit interesting. Even though the NLL code stores the scope, it's not "fully" as lazy at it could be, given that it does visit the entire type to start: <a href="https://github.com/rust-lang/rust/blob/9104c898eb323f9edd205acf87c2b2d6badeddd7/compiler/rustc_infer/src/infer/nll_relate/mod.rs#L189">https://github.com/rust-lang/rust/blob/9104c898eb323f9edd205acf87c2b2d6badeddd7/compiler/rustc_infer/src/infer/nll_relate/mod.rs#L189</a></p>



<a name="242350313"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242350313" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242350313">(Jun 11 2021 at 14:10)</a>:</h4>
<p>Ok the lazy replacement fixed the normalization regression. Now there's just the codegen perf regression. (For that benchmark, some others have up to a 10% regression)</p>



<a name="242402549"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242402549" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242402549">(Jun 11 2021 at 21:00)</a>:</h4>
<p>So, trying to look into why there's a codegen regression.</p>



<a name="242402558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242402558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242402558">(Jun 11 2021 at 21:00)</a>:</h4>
<p>And I'm a bit confused</p>



<a name="242402651"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242402651" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242402651">(Jun 11 2021 at 21:01)</a>:</h4>
<p>(still looking at the <code>deeply-nested-async</code>benchmark)</p>



<a name="242402776"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242402776" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242402776">(Jun 11 2021 at 21:02)</a>:</h4>
<p>So, on master we end up calling <code>llvm_type</code> with a generator that has an <code>impl Future</code> as a subst...but since this is codegen time, I would expect that to normalize to <code>GenFuture</code></p>



<a name="242402811"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242402811" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242402811">(Jun 11 2021 at 21:02)</a>:</h4>
<p>And obviously in the branch, we <em>do</em> normalize</p>



<a name="242402827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242402827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242402827">(Jun 11 2021 at 21:02)</a>:</h4>
<p>which means it's just a <em>much</em> bigger type</p>



<a name="242402873"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242402873" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242402873">(Jun 11 2021 at 21:03)</a>:</h4>
<p>It's interesting though, because we're in <code>Reveal::All</code> <em>and</em> we've "erased" regions (but not late-bound regions)</p>



<a name="242404681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242404681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242404681">(Jun 11 2021 at 21:18)</a>:</h4>
<p>We could try using unnamed types once again in LLVM 13 (last attempt was reverted due to lack of support for overloading on unnamed types, but it was implemented in <a href="https://reviews.llvm.org/D91250">https://reviews.llvm.org/D91250</a>), or use shorter less informative names now (the generator type names are especially verbose).</p>



<a name="242406703"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242406703" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242406703">(Jun 11 2021 at 21:37)</a>:</h4>
<p>The longest type name grows from 15MB to 61MB.</p>



<a name="242407380"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242407380" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242407380">(Jun 11 2021 at 21:43)</a>:</h4>
<p>Yeah, because the <code>impl Future</code> subst gets expanded, it gets very long</p>



<a name="242430467"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242430467" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242430467">(Jun 12 2021 at 06:05)</a>:</h4>
<p>Okay so just <em>not</em> substituting opaque types when there are escaping bound vars fixes the codegen perf regression</p>



<a name="242430535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242430535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242430535">(Jun 12 2021 at 06:06)</a>:</h4>
<p>So, the deeply nested async test gets as much as a 34% perf improvement in incr-unchanged and like 13% on full</p>



<a name="242430540"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242430540" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242430540">(Jun 12 2021 at 06:06)</a>:</h4>
<p>Seems like there's a separate regression during typeck to look into though</p>



<a name="242430544"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242430544" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242430544">(Jun 12 2021 at 06:06)</a>:</h4>
<p>About 10% max</p>



<a name="242430704"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242430704" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242430704">(Jun 12 2021 at 06:09)</a>:</h4>
<p>Actually, might not be a typeck regression. Looks also like a codegen regression (incr-unchanged has basically no diff)</p>



<a name="242430759"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242430759" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242430759">(Jun 12 2021 at 06:10)</a>:</h4>
<p>Well, maybe that's not enough to say it's a codegen regression</p>



<a name="242430847"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242430847" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242430847">(Jun 12 2021 at 06:13)</a>:</h4>
<p>Ok yeah, not codegen because check benches regress</p>



<a name="242435711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242435711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242435711">(Jun 12 2021 at 08:13)</a>:</h4>
<p>I opened <a href="https://github.com/rust-lang/rust/issues/86240">#86240</a>,but I see you already resolved that aspect of perf regression.</p>



<a name="242448465"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242448465" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242448465">(Jun 12 2021 at 12:37)</a>:</h4>
<p>btw do we document anywhere that these types' pretty printing can have such a dramatic impact on codegen performance ? (albeit in uncommon/pathological cases of course, making them performance-sensitive on the happy path, instead of, say, just when pretty printing for displaying errors)</p>



<a name="242452388"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242452388" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242452388">(Jun 12 2021 at 14:06)</a>:</h4>
<p><span class="user-mention" data-user-id="335061">@TM</span> this is okay, ideally I can revert the latest commit :)</p>



<a name="242610040"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242610040" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242610040">(Jun 14 2021 at 14:59)</a>:</h4>
<p>So, I tried reproducing the perf regressions for the other benchmarks with ~10% max locally. And haven't really been able to. There might be an instruction count regression, but I don't think there's really much, if any, of a wall time regression</p>



<a name="242610197"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242610197" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242610197">(Jun 14 2021 at 15:00)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> could you maybe take a look if you find time? Specifically the inflate-check and keccak-check are big regressions</p>



<a name="242610572"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242610572" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242610572">(Jun 14 2021 at 15:02)</a>:</h4>
<p>I <em>almost</em> just want to eat the regression, given that we also have like a  30% improvement for the deep-nested-async now</p>



<a name="242622386"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242622386" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242622386">(Jun 14 2021 at 16:14)</a>:</h4>
<p>btw have you tried rerunning perf now that <a href="https://github.com/rust-lang/rust/issues/86240">#86240</a> has landed (since it had a 50-70% improvement on some of the <code>deeply-nested-async</code> benchmarks) and its results looked complementary to your PR's results  ?</p>



<a name="242626544"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242626544" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242626544">(Jun 14 2021 at 16:46)</a>:</h4>
<p>I have not, but yes, they should be complementary</p>



<a name="242642394"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242642394" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242642394">(Jun 14 2021 at 18:46)</a>:</h4>
<p>So, can anyone help me by doing profile for this branch (<a href="https://github.com/jackh726/rust/tree/assoc-type-norm-rebase">https://github.com/jackh726/rust/tree/assoc-type-norm-rebase</a>) and its base (<a href="https://github.com/jackh726/rust/commit/df70463ea5d701489d6f53dc780a2c16294d6143">https://github.com/jackh726/rust/commit/df70463ea5d701489d6f53dc780a2c16294d6143</a>) for the "keccak-check" benchmark? I can go through and compare, but not currently able to run perf locally</p>



<a name="242798023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/242798023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#242798023">(Jun 15 2021 at 20:52)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> if you get some time, would love some thoughts on this!</p>



<a name="243056750"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243056750" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243056750">(Jun 17 2021 at 17:50)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> you around?</p>



<a name="243064402"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243064402" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243064402">(Jun 17 2021 at 18:41)</a>:</h4>
<p>sort of</p>



<a name="243064593"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243064593" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243064593">(Jun 17 2021 at 18:42)</a>:</h4>
<p>I think I'm kind of stuck here</p>



<a name="243064631"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243064631" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243064631">(Jun 17 2021 at 18:43)</a>:</h4>
<p>yeah, sorry I've not given you any feedback yet</p>



<a name="243064662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243064662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243064662">(Jun 17 2021 at 18:43)</a>:</h4>
<p>keccak-check is the problem now?</p>



<a name="243064670"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243064670" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243064670">(Jun 17 2021 at 18:43)</a>:</h4>
<p>I've been trying to find out what exactly is causing the typeck perf regression in the branch</p>



<a name="243064683"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243064683" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243064683">(Jun 17 2021 at 18:43)</a>:</h4>
<p>keccak-check or inflate-check</p>



<a name="243064718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243064718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243064718">(Jun 17 2021 at 18:43)</a>:</h4>
<p>But these benchmarks are so big that logging things is kind of awful</p>



<a name="243068483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243068483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243068483">(Jun 17 2021 at 19:10)</a>:</h4>
<p>yeah</p>



<a name="243103026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243103026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243103026">(Jun 18 2021 at 00:28)</a>:</h4>
<p>I'm still confused. So, outputting <code>project_type</code>, <code>normalize_with_depth_to</code>, and <code>query::normalize::normalize</code>, and diffing, the only difference is:</p>
<div class="codehilite" data-code-language="Diff"><pre><span></span><code>35c35
&lt; ┐rustc_trait_selection::traits::project::normalize_with_depth_to depth=0, value=Binder(([&amp;mut [u64; _]]; c_variadic: false)-&gt;(), [Region(BrAnon(0))])
<span class="gd">---</span>
&gt; ┐rustc_trait_selection::traits::project::normalize_with_depth_to depth=0, value=([&amp;mut [u64; _]]; c_variadic: false)-&gt;()
57,58d56
&lt; ┘
&lt; ┐rustc_trait_selection::traits::project::normalize_with_depth_to depth=0, value=Binder(([&amp;mut [u64; 25]]; c_variadic: false)-&gt;(), [Region(BrAnon(0))])
</code></pre></div>



<a name="243103161"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243103161" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243103161">(Jun 18 2021 at 00:30)</a>:</h4>
<p>So, whatever has changed in <code>typeck</code> isn't easily found</p>



<a name="243103791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243103791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243103791">(Jun 18 2021 at 00:37)</a>:</h4>
<p>Even just logging <code>debug</code> for <code>rustc_typeck</code> outputs over three million lines, so kind of difficult to diff</p>



<a name="243109955"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243109955" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243109955">(Jun 18 2021 at 02:23)</a>:</h4>
<p>Okay...so the number of calls logged for <code>rustc_typeck=debug</code> is the same</p>



<a name="243109965"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/243109965" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#243109965">(Jun 18 2021 at 02:23)</a>:</h4>
<p>So...maybe we're not necessarily doing <em>more</em> work, just slower...</p>



<a name="244156972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244156972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244156972">(Jun 28 2021 at 14:54)</a>:</h4>
<p>So <span class="user-mention" data-user-id="116009">@nikomatsakis</span>, I think realistically the next step here is for you to do a real review of <a href="https://github.com/rust-lang/rust/issues/85499">#85499</a></p>



<a name="244202821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244202821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244202821">(Jun 28 2021 at 20:50)</a>:</h4>
<p>I queued a crater run for this. Seems significant enough that there could definitely be some corner cases</p>



<a name="244295265"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244295265" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244295265">(Jun 29 2021 at 14:59)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> ok</p>



<a name="244312350"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244312350" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244312350">(Jun 29 2021 at 16:53)</a>:</h4>
<p><a href="https://crater.rust-lang.org/ex/pr-85499">https://crater.rust-lang.org/ex/pr-85499</a><br>
Estimated end:  2 months<br>
That can't be right lol</p>



<a name="244312429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244312429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244312429">(Jun 29 2021 at 16:53)</a>:</h4>
<p>we switched to a different run (it errored out and was retried)</p>



<a name="244312444"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244312444" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244312444">(Jun 29 2021 at 16:53)</a>:</h4>
<p>it'll probably be done ~next monday, roughly</p>



<a name="244312470"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244312470" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244312470">(Jun 29 2021 at 16:53)</a>:</h4>
<p>mmm okay</p>



<a name="244378129"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244378129" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244378129">(Jun 30 2021 at 05:07)</a>:</h4>
<p>Tried to dig into the <code>Yokeable</code> bug. Fell down the leak check rabbit hole again</p>



<a name="244378136"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244378136" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244378136">(Jun 30 2021 at 05:07)</a>:</h4>
<p>My brain still can't get comfortable with</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="k">trait</span><span class="w"> </span><span class="n">Trait</span><span class="w"> </span><span class="p">{}</span><span class="w"></span>
<span class="k">impl</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="n">Trait</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">fn</span><span class="p">(</span><span class="o">&amp;</span><span class="n">T</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="k">impl</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="w"> </span><span class="n">Trait</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">fn</span><span class="p">(</span><span class="n">T</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
</code></pre></div>



<a name="244378203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244378203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244378203">(Jun 30 2021 at 05:08)</a>:</h4>
<p>Like I can understand that <code>fn(T)</code> and <code>for&lt;'a&gt; fn(&amp;'a T)</code> aren't the same. But like...it's weird</p>



<a name="244440466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244440466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244440466">(Jun 30 2021 at 15:20)</a>:</h4>
<p>Okay, so still haven't fully dug into it. But <code>'static</code> is coming because we're basically equating the closure signature with the expected function type. And we get something like <code>Yokeable&lt;{placeholder}&gt;</code> LUBed with <code>Yokeable&lt;ReFree&gt;</code>, which means <code>'static</code></p>



<a name="244460896"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244460896" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244460896">(Jun 30 2021 at 17:37)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> you around?</p>



<a name="244595737"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244595737" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244595737">(Jul 01 2021 at 16:50)</a>:</h4>
<p>Okay I have a MCVE of the regression: <a href="https://gist.github.com/jackh726/f8ed5202fbbfa2e65f9cc4723a89828f">https://gist.github.com/jackh726/f8ed5202fbbfa2e65f9cc4723a89828f</a></p>



<a name="244595744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244595744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244595744">(Jul 01 2021 at 16:50)</a>:</h4>
<p>builds in nightly, fails in <a href="https://github.com/rust-lang/rust/issues/85499">#85499</a></p>



<a name="244595794"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244595794" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244595794">(Jul 01 2021 at 16:50)</a>:</h4>
<p>haven't completely confirmed this, but I think I have an idea of what's going on</p>



<a name="244595829"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244595829" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244595829">(Jul 01 2021 at 16:51)</a>:</h4>
<p>in the closure, we have <code>|yt, _| yt</code></p>



<a name="244595899"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244595899" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244595899">(Jul 01 2021 at 16:51)</a>:</h4>
<p>The output of the closure gets assigned a type variable <code>_#4t</code></p>



<a name="244596043"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244596043" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244596043">(Jul 01 2021 at 16:52)</a>:</h4>
<p>that gets generalized to <code>&amp;'_#6r ()</code></p>



<a name="244596132"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244596132" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244596132">(Jul 01 2021 at 16:53)</a>:</h4>
<p>and then there's this Sub: <code>&amp;ReFree(DefId(0:19 ~ issue_85636[317d]::slice::{closure#0}), BrAnon(0)) () &lt;: &amp;'_#6r ()</code></p>



<a name="244596223"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244596223" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244596223">(Jul 01 2021 at 16:54)</a>:</h4>
<p>We also want to pass that closure to <code>project</code></p>



<a name="244596258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244596258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244596258">(Jul 01 2021 at 16:54)</a>:</h4>
<p>where the output expected is <code>&lt;P as Yokeable&lt;'a&gt;&gt;::Output</code></p>



<a name="244596522"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244596522" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244596522">(Jul 01 2021 at 16:56)</a>:</h4>
<p>eventually, <code>&amp;'_#6r ()</code> and <code>&amp;'a ()</code> get equated, somewhat. But that <code>'a</code> is a placeholder...</p>



<a name="244596722"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244596722" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244596722">(Jul 01 2021 at 16:58)</a>:</h4>
<div class="codehilite"><pre><span></span><code>eq(&lt;&amp;&#39;_#9r () as Yokeable&lt;RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:17 ~ issue_85636[317d]::{impl#0}::project::&#39;a#1), &#39;a) })&gt;&gt; == &lt;&amp;ReStatic _#12t as Yokeable&lt;&#39;_#10r&gt;&gt;)
</code></pre></div>



<a name="244596890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244596890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244596890">(Jul 01 2021 at 16:59)</a>:</h4>
<p>I mean, technically <code>'_#10r</code> gets subbed with <code>'a</code> and equated with <code>'_#6r</code></p>



<a name="244597040"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244597040" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244597040">(Jul 01 2021 at 17:00)</a>:</h4>
<p>But now they're chained and eventually we <code>LUB</code> a <code>ReFree</code> and <code>RePlaceholder</code> and get a <code>ReStatic</code></p>



<a name="244597258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244597258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244597258">(Jul 01 2021 at 17:01)</a>:</h4>
<p>I'm kind of out of time atm to dig into this more. But I think I need to look into <code>'_#10r</code> a bit more. I.e. why is it getting equated and subbed on both sides. I think that connection is "leaking" out of the projection code.</p>



<a name="244597606"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244597606" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244597606">(Jul 01 2021 at 17:04)</a>:</h4>
<p>I wonder if this is a hint that these projections need to be happening in a new inference context</p>



<a name="244607414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244607414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244607414">(Jul 01 2021 at 18:23)</a>:</h4>
<p>Oh <span class="user-mention" data-user-id="116009">@nikomatsakis</span>! I think this is the test case for the <code>Quantify</code> :)</p>



<a name="244607421"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244607421" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244607421">(Jul 01 2021 at 18:23)</a>:</h4>
<div class="codehilite"><pre><span></span><code>ProjectionPredicate(ProjectionTy { substs: [_#2t, RePlaceholder(Placeholder { universe: U2, name: BrNamed(DefId(0:17 ~ issue_85636[317d]::{impl#0}::project::&#39;a#1), &#39;a) })], item_def_id: DefId(0:5 ~ issue_85636[317d]::Yokeable::Output) }, _#4t)
</code></pre></div>



<a name="244607463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244607463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244607463">(Jul 01 2021 at 18:23)</a>:</h4>
<p>That predicate is "escaping" the projection code</p>



<a name="244609002"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244609002" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244609002">(Jul 01 2021 at 18:36)</a>:</h4>
<p>well...</p>



<a name="244609023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244609023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244609023">(Jul 01 2021 at 18:36)</a>:</h4>
<p>this is tricky</p>



<a name="244610570"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244610570" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244610570">(Jul 01 2021 at 18:49)</a>:</h4>
<p>It's not <em>quite</em> the same as the <code>Generalize</code>/<code>Quantify</code> you were thinking. Since this is happening in the <em>predicates</em></p>



<a name="244612075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244612075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244612075">(Jul 01 2021 at 19:01)</a>:</h4>
<p>I guess in this case, we probably want a new type <code>?X</code> that is the "normalized_ty" and then push a <code>Quantify(_#4t, ?X, !'a -&gt; 'a)</code></p>



<a name="244612468"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244612468" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244612468">(Jul 01 2021 at 19:04)</a>:</h4>
<p>And that will probably fix it. And I am once again astonished by <span class="user-mention" data-user-id="116009">@nikomatsakis</span>'s foresight</p>



<a name="244612490"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244612490" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244612490">(Jul 01 2021 at 19:04)</a>:</h4>
<p>..happy to be of service...</p>



<a name="244612495"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244612495" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244612495">(Jul 01 2021 at 19:04)</a>:</h4>
<p>(Sorry I'm so out of it here)</p>



<a name="244612590"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244612590" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244612590">(Jul 01 2021 at 19:05)</a>:</h4>
<p>No problem. Pretty sure I figured it out</p>



<a name="244654483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244654483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244654483">(Jul 02 2021 at 02:48)</a>:</h4>
<p>Ugh well guess this is going to be less straightforward than I expected</p>



<a name="244654630"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244654630" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244654630">(Jul 02 2021 at 02:51)</a>:</h4>
<p>So, currently, when we see a <code>ty::Projection</code>, we basically take all escaping bound vars, replace them with placeholders,  project, then replace the placeholders with bound vars. (This is the happy path.) Importantly, we do the bound var replacement <em>lazily</em>, after we've already descended past the binders for them. The rationale for why this is okay is that it's more or less a <code>Binder::map</code>, where we don't create new bound vars</p>



<a name="244654766"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244654766" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244654766">(Jul 02 2021 at 02:54)</a>:</h4>
<p>Well, now the not-so-happy path. If we see something like <code>&lt;?0 as Trait&gt;::Assoc</code>, then the projection bit fails. So, on mast, we make a new ty var <code>?1</code> and use <em>that</em> as the projected type. And the register the obligation <code>&lt;?0 as Trait&gt;::Assoc -&gt; ?1</code></p>



<a name="244654771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244654771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244654771">(Jul 02 2021 at 02:55)</a>:</h4>
<p>This is where things get tricky</p>



<a name="244654828"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244654828" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244654828">(Jul 02 2021 at 02:56)</a>:</h4>
<p>If instead we have something like <code>&lt;?0 as Trait&lt;'a&gt;&gt;::Assoc</code> where there is a <code>for&lt;'a&gt;</code> somewhere above us, then what is that obligation going to look like?</p>



<a name="244654851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244654851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244654851">(Jul 02 2021 at 02:57)</a>:</h4>
<p><code>for&lt;'a&gt; &lt;?0 as Trait&lt;'a&gt;&gt;::Assoc -&gt; ?1</code>, right? Except, we're already beneath the binders.</p>



<a name="244654853"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244654853" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244654853">(Jul 02 2021 at 02:57)</a>:</h4>
<p>Okay, that easy, just keep track of the binders as we descend</p>



<a name="244654898"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244654898" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244654898">(Jul 02 2021 at 02:58)</a>:</h4>
<p>well, what about if we end up with something like <code>for&lt;'a&gt; for&lt;'b&gt; &lt;?0 as Trait&lt;'a, 'b&gt;&gt;::Assoc</code></p>



<a name="244654901"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244654901" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244654901">(Jul 02 2021 at 02:58)</a>:</h4>
<p>Well, now that predicate has two levels of binders</p>



<a name="244655030"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244655030" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244655030">(Jul 02 2021 at 03:01)</a>:</h4>
<p>Even better, we <em>really</em> want something like two new variables: <code>?1</code> and <code>?2</code> and then we register <em>two</em> predicates, <code>&lt;?0 as Trait&lt;'!a&gt;&gt;::Assoc -&gt; ?1</code> and <code>Quantify(?1, ?2, {'!a -&gt; 'a})</code>, where we return <code>?2</code></p>



<a name="244655086"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244655086" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244655086">(Jul 02 2021 at 03:02)</a>:</h4>
<p>Importantly, this let's us ensure that we don't get things related to <code>?1</code> directly, since that will have the projected placeholders</p>



<a name="244655102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244655102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244655102">(Jul 02 2021 at 03:03)</a>:</h4>
<p>We still have the same problem though, that <code>'a</code> (late bound version) appears in the <code>Quantify</code> predicate</p>



<a name="244655110"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244655110" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244655110">(Jul 02 2021 at 03:03)</a>:</h4>
<p>So, same problem exists in that we've passed the binders and also could have multiple levels</p>



<a name="244866602"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/244866602" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#244866602">(Jul 04 2021 at 16:22)</a>:</h4>
<p>Welp so <code>Quantify</code> seems to have an inherit flaw, at least in the current state: bound vars can't be related. So if we have <code>Quantify(?0, ?1, '!a -&gt; 'a)</code>, eventually we might be a type <code>X&lt;'!a&gt;</code> for <code>?0</code>, but then when we try to equate <code>X&lt;'a&gt;</code> and <code>?1</code>, it fails</p>



<a name="245049838"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245049838" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245049838">(Jul 06 2021 at 14:52)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I could really use some thoughts here</p>



<a name="245088347"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245088347" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245088347">(Jul 06 2021 at 19:35)</a>:</h4>
<p><span class="user-mention" data-user-id="232957">@Jack Huey</span> the key point here being that <code>'a</code> is a bound variable... i.e., this is occurring within a <em>nested</em> binder?</p>



<a name="245088484"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245088484" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245088484">(Jul 06 2021 at 19:36)</a>:</h4>
<p>Sorry, where?</p>



<a name="245088507"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245088507" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245088507">(Jul 06 2021 at 19:36)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/244866602">said</a>:</p>
<blockquote>
<p>Welp so <code>Quantify</code> seems to have an inherit flaw, at least in the current state: bound vars can't be related. So if we have <code>Quantify(?0, ?1, '!a -&gt; 'a)</code>, eventually we might be a type <code>X&lt;'!a&gt;</code> for <code>?0</code>, but then when we try to equate <code>X&lt;'a&gt;</code> and <code>?1</code>, it fails</p>
</blockquote>
<p>here</p>



<a name="245088646"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245088646" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245088646">(Jul 06 2021 at 19:37)</a>:</h4>
<p>so...I'm not sure what you're asking?</p>



<a name="245088657"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245088657" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245088657">(Jul 06 2021 at 19:37)</a>:</h4>
<p>Yes, <code>'a</code> is bound</p>



<a name="245088802"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245088802" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245088802">(Jul 06 2021 at 19:39)</a>:</h4>
<p>If I understood correctly, <code>Quantify</code> is supposed to delay replacing placeholders with bound vars from which they came until the type is sufficiently well known</p>



<a name="245088847"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245088847" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245088847">(Jul 06 2021 at 19:39)</a>:</h4>
<p>I'm trying to figure out how it fails</p>



<a name="245088958"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245088958" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245088958">(Jul 06 2021 at 19:40)</a>:</h4>
<p>one sec, I'll get link</p>



<a name="245088960"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245088960" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245088960">(Jul 06 2021 at 19:40)</a>:</h4>
<p>I guess you're just saying: if we replace <code>'!a</code> with the <code>ReLateBound</code>  whence it came, we cannot use the existing unification logic</p>



<a name="245088973"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245088973" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245088973">(Jul 06 2021 at 19:40)</a>:</h4>
<p>yes</p>



<a name="245089218"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089218" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089218">(Jul 06 2021 at 19:43)</a>:</h4>
<p>Yes, and this .. seems true. We could readily fix it, but I'm wondering if indeeeeed the scheme isn't a little broken</p>



<a name="245089248"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089248" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089248">(Jul 06 2021 at 19:43)</a>:</h4>
<p>In particular, if you have <code>?1</code> and it <em>may eventually</em> reference bound regions</p>



<a name="245089259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089259">(Jul 06 2021 at 19:43)</a>:</h4>
<p>and you wind up with a type like <code>for&lt;'a&gt; fn(?1)</code></p>



<a name="245089284"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089284" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089284">(Jul 06 2021 at 19:43)</a>:</h4>
<p>yeah, that's more or less where my mind was going</p>



<a name="245089285"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089285" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089285">(Jul 06 2021 at 19:43)</a>:</h4>
<p>we can't execute operations on that type until <code>?1</code> is known</p>



<a name="245089303"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089303" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089303">(Jul 06 2021 at 19:43)</a>:</h4>
<p>err, maybe</p>



<a name="245089307"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089307" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089307">(Jul 06 2021 at 19:44)</a>:</h4>
<p>yeah, which is roughly why I always tried to avoid this in the past</p>



<a name="245089391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089391">(Jul 06 2021 at 19:44)</a>:</h4>
<p>for example we couldn't "instantiate all the bound regions" in that type</p>



<a name="245089504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089504">(Jul 06 2021 at 19:45)</a>:</h4>
<p>Even sort of continuing on this...the problems really start to show up when we fail to project something like <code>&lt;?0 as Trait&lt;'a&gt;&gt;::Assoc</code></p>



<a name="245089512"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089512" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089512">(Jul 06 2021 at 19:45)</a>:</h4>
<p>But we return <code>?1</code></p>



<a name="245089549"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089549" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089549">(Jul 06 2021 at 19:45)</a>:</h4>
<p>And register <code>&lt;?0 as Trait&lt;'a&gt;&gt;::Assoc = ?1</code></p>



<a name="245089678"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089678" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089678">(Jul 06 2021 at 19:46)</a>:</h4>
<p>Because either <code>'a</code> is placeholder, or it's a bound var. But either way, eventually we're going to end up with something like <code>?1 = for&lt;'a&gt; ...</code></p>



<a name="245089690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089690">(Jul 06 2021 at 19:46)</a>:</h4>
<p>which is a bit weird</p>



<a name="245089760"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089760" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089760">(Jul 06 2021 at 19:47)</a>:</h4>
<p>I don't really understand your example</p>



<a name="245089780"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089780" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089780">(Jul 06 2021 at 19:47)</a>:</h4>
<p>But maybe, sadly, this endeavor is flawed, and we have to backup a bit</p>



<a name="245089808"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245089808" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245089808">(Jul 06 2021 at 19:48)</a>:</h4>
<p>It's starting to feel it...</p>



<a name="245090074"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090074" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090074">(Jul 06 2021 at 19:49)</a>:</h4>
<p>I was thinking about...what if when we can't project...we just don't. We essentially keep the old behavior.</p>



<a name="245090096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090096">(Jul 06 2021 at 19:50)</a>:</h4>
<p>But I don't really like that</p>



<a name="245090154"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090154" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090154">(Jul 06 2021 at 19:50)</a>:</h4>
<p>hmm</p>



<a name="245090156"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090156" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090156">(Jul 06 2021 at 19:50)</a>:</h4>
<p>kind of a "best effort"?</p>



<a name="245090173"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090173" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090173">(Jul 06 2021 at 19:50)</a>:</h4>
<p>I'm feeling a bit annoyed at myself for not seeing this problem (so much for foresight :P)</p>



<a name="245090186"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090186" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090186">(Jul 06 2021 at 19:50)</a>:</h4>
<p>but regardless</p>



<a name="245090210"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090210" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090210">(Jul 06 2021 at 19:50)</a>:</h4>
<p>what was the bug that started us down this path again?</p>



<a name="245090235"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090235" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090235">(Jul 06 2021 at 19:51)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/issues/76407">https://github.com/rust-lang/rust/issues/76407</a> ?</p>



<a name="245090247"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090247" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090247">(Jul 06 2021 at 19:51)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407/near/244595737">said</a>:</p>
<blockquote>
<p>Okay I have a MCVE of the regression: <a href="https://gist.github.com/jackh726/f8ed5202fbbfa2e65f9cc4723a89828f">https://gist.github.com/jackh726/f8ed5202fbbfa2e65f9cc4723a89828f</a></p>
</blockquote>
<p>this</p>



<a name="245090266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090266">(Jul 06 2021 at 19:51)</a>:</h4>
<p>oh wait</p>



<a name="245090274"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090274" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090274">(Jul 06 2021 at 19:51)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/issues/76826">https://github.com/rust-lang/rust/issues/76826</a></p>



<a name="245090276"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090276" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090276">(Jul 06 2021 at 19:51)</a>:</h4>
<p>do you mean all the way back to GATs</p>



<a name="245090343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090343">(Jul 06 2021 at 19:52)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/issues/76826">#76826</a></p>



<a name="245090354"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090354" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090354">(Jul 06 2021 at 19:52)</a>:</h4>
<p>But also somewhat <a href="https://github.com/rust-lang/rust/issues/76407">#76407</a> too</p>



<a name="245090438"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090438" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090438">(Jul 06 2021 at 19:53)</a>:</h4>
<p>My thoughts were something like "this should be relatively easy to fix for GATs, because we should always actually be able to project the type assuming there aren't bound vars in the <em>trait path</em>"</p>



<a name="245090486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245090486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245090486">(Jul 06 2021 at 19:53)</a>:</h4>
<p>Kind of a subset of the current changes</p>



<a name="245091371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/GAT%20Bugs%20%2376826%2C%20%2376407/near/245091371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/GAT.20Bugs.20.2376826.2C.20.2376407.html#245091371">(Jul 06 2021 at 20:00)</a>:</h4>
<p>Yes, so, that's .. plausible</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>